ES2728097T3 - Weight based image processing - Google Patents
Weight based image processing Download PDFInfo
- Publication number
- ES2728097T3 ES2728097T3 ES15201105T ES15201105T ES2728097T3 ES 2728097 T3 ES2728097 T3 ES 2728097T3 ES 15201105 T ES15201105 T ES 15201105T ES 15201105 T ES15201105 T ES 15201105T ES 2728097 T3 ES2728097 T3 ES 2728097T3
- Authority
- ES
- Spain
- Prior art keywords
- color
- image
- block
- elements
- weights
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/001—Model-based coding, e.g. wire frame
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/004—Predictors, e.g. intraframe, interframe coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/186—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods 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 que comprende múltiples elementos (610) de imagen en una representación (700) de bloque comprimida, dicho método comprende los pasos de: asignar, para cada componente de color de cada elemento (610) de imagen de dicho bloque (600) de imagen, los pesos de color predefinidos wx,y basándose en una posición (x, y) de dicho elemento (610) de imagen en dicho bloque (600) de imagen; determinar, en base a dichos pesos de color predefinidos wx,y asignados y a los colores originales de dichos elementos (610) de imagen múltiples, al menos dos claves (710, 720, 730, 740) de color que son representaciones de al menos dos valores de color, comprendiendo dicha representación (700) de bloque comprimida dichas al menos dos claves (710, 720, 730, 740) de color; y representar colores originales de dichos múltiples elementos (610) de imagen mediante representaciones de color que se derivan de dichos al menos dos valores de color, en donde dichas representaciones de color de dichos elementos (610) de imagen se derivan de combinaciones lineales de dichos al menos dos valores de color ponderados mediante dichos pesos de color predefinidos wx,y asignados, y en donde dicha representación de color de dicho elemento de imagen se obtiene multiplicando cada componente de color de dichos al menos dos valores de color por el correspondiente peso de color predefinido wx,y asignado de dicho componente de color en dicha posición (x, y) de dicho elemento de imagen, caracterizado por que dichos pesos de color wx,y están predefinidos para que dichos pesos de color wx,y disminuyan monótonamente a lo largo de cada fila de elementos (610) de imagen en dicho bloque (600) de imagen, o aumenten monótonamente a lo largo de cada fila de elementos (610) de imagen en dicho bloque (600) de imagen; y dichos pesos de color wx,y están predefinidos para que dichos pesos de color wx,y disminuyan monótonamente a lo largo de cada columna de elementos (610) de imagen en dicho bloque (600) de imagen, o aumenten monótonamente a lo largo de cada columna de elementos (610) de imagen en dicho bloque (600) de imagen.A method for compressing an image block (600) comprising multiple image elements (610) in a compressed block representation (700), said method comprises the steps of: assigning, for each color component of each element (610) image of said image block (600), the predefined color weights wx, and based on a position (x, y) of said image element (610) in said image block (600); determine, based on said predefined color weights wx, and assigned and the original colors of said multiple image elements (610), at least two keys (710, 720, 730, 740) of color that are representations of at least two color values, said compressed block representation (700) comprising said at least two keys (710, 720, 730, 740) of color; and representing original colors of said multiple image elements (610) by color representations that are derived from said at least two color values, wherein said color representations of said image elements (610) are derived from linear combinations of said at least two color values weighted by said predefined color weights wx, and assigned, and wherein said color representation of said image element is obtained by multiplying each color component of said at least two color values by the corresponding weight of predefined color wx, and assigned of said color component in said position (x, y) of said image element, characterized in that said color weights wx, and are predefined so that said color weights wx, and decrease monotonously as along each row of image elements (610) in said image block (600), or increase monotonously along each row of image elements (610) in said image block (600); and said color weights wx, and are predefined so that said color weights wx, and decrease monotonously along each column of image elements (610) in said image block (600), or increase monotonously along each column of image elements (610) in said image block (600).
Description
DESCRIPCIÓNDESCRIPTION
Procesamiento de imágenes basado en pesoWeight based image processing
Campo técnicoTechnical field
La presente invención se refiere en general al procesamiento de imágenes, y en particular a métodos y sistemas para codificar y descodificar imágenes.The present invention relates generally to image processing, and in particular to methods and systems for encoding and decoding images.
AntecedentesBackground
La presentación y representación (en inglés, "rendering") de imágenes y gráficos en sistemas de procesamiento de datos y terminales de usuario tales como ordenadores, y en particular en terminales móviles, han aumentado enormemente en los últimos años. Por ejemplo, los gráficos e imágenes tridimensionales (3D) tienen una serie de atractivas aplicaciones en este tipo de terminales, entre ellas juegos, mapas en 3D y mensajería, protectores de pantalla e interfaces hombre-máquina.The presentation and representation (in English, "rendering") of images and graphics in data processing systems and user terminals such as computers, and in particular in mobile terminals, have increased greatly in recent years. For example, three-dimensional (3D) graphics and images have a number of attractive applications in these types of terminals, including games, 3D maps and messaging, screen savers and human-machine interfaces.
Un proceso de representación de gráficos en 3D comprende típicamente tres sub-etapas. En pocas palabras, una primera etapa, la etapa de aplicación, crea varios triángulos. En una segunda etapa, la etapa de la geometría, se transforman las esquinas de estos triángulos, se proyectan y se iluminan. En una tercera etapa, la etapa de barrido (en inglés, "rastering"), se pueden "pegar" en los triángulos imágenes, denominadas frecuentemente texturas, que aumentan el realismo de la imagen representada. La tercera etapa también realiza normalmente una clasificación utilizando una memoria intermedia z (en inglés, "z-buffer").A 3D graphics representation process typically comprises three sub-stages. Simply put, a first stage, the application stage, creates several triangles. In a second stage, the geometry stage, the corners of these triangles are transformed, projected and illuminated. In a third stage, the scanning stage (in English, "rastering"), you can "paste" in the triangles images, often called textures, which increase the realism of the image represented. The third stage also normally performs a classification using a z buffer (in English, "z-buffer").
Sin embargo, la representación de imágenes y texturas, y en particular de imágenes en 3D y gráficos, es una tarea computacionalmente cara en términos de ancho de banda de memoria y potencia de procesamiento requeridos para los sistemas gráficos. Por ejemplo, las texturas son costosas tanto en términos de memoria, puesto que se requiere ubicar o almacenar las texturas en memoria "en el chip", que es más rápida, como en términos de ancho de banda de memoria, porque puede ser necesario acceder a una textura varias veces para dibujar un solo píxel.However, the representation of images and textures, and in particular of 3D images and graphics, is a computationally expensive task in terms of memory bandwidth and processing power required for graphic systems. For example, textures are expensive both in terms of memory, since it is required to locate or store textures in memory "on the chip", which is faster, and in terms of memory bandwidth, because access may be necessary to a texture several times to draw a single pixel.
Para reducir los requisitos de ancho de banda y de potencia de procesamiento, típicamente se emplea un método o sistema de codificación de imagen (textura). Este sistema de codificación debe permitir un uso más eficaz de la costosa memoria en el chip y un menor ancho de banda de memoria durante la representación y, por lo tanto, un menor consumo de energía y/o una representación más rápida.To reduce the bandwidth and processing power requirements, typically an image coding method (texture) is used. This coding system should allow for more efficient use of expensive memory on the chip and less memory bandwidth during rendering and, therefore, lower power consumption and / or faster rendering.
Delp y Mitchell [1] desarrollaron un esquema simple, denominado codificación de truncamiento de bloques (BTC, por sus siglas en inglés) para la compresión de imágenes. Aunque sus aplicaciones no fueron en sí la compresión de texturas, algunos de los otros sistemas descritos en esta sección se basan en sus ideas. Su esquema comprimía imágenes en escala de grises, considerando un bloque de 4x4 píxeles 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 después un solo bit para indicar una de estas escalas de grises. Esto daba lugar a 2 bits por pixel (bpp).Delp and Mitchell [1] developed a simple scheme, called block truncation coding (BTC) for image compression. Although its applications were not textural compression itself, some of the other systems described in this section are based on their ideas. Its scheme compressed images in grayscale, considering a block of 4x4 pixels at a time. For such a block, two 8-bit gray scale values were stored, and each pixel in the block then used a single bit to indicate one of these gray scales. This resulted in 2 bits per pixel (bpp).
Campbell et al. [2] presentaron un desarrollo sencillo de la BTC, denominado compresión de células 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 índice en una paleta de colores. Esto permite comprimir texturas de color a 2 bpp. Sin embargo, es necesaria una búsqueda de memoria en la paleta, y el tamaño de la paleta está limitado.Campbell et al. [2] presented a simple development of BTC, called color cell compression (CCC). Instead of using an 8-bit grayscale value, the 8-bit value is used as an index in a color palette. This allows to compress color textures at 2 bpp. However, a memory search in the palette is necessary, and the palette size is limited.
El método S3TC de compresión de texturas, de Iourcha et al. [3] es probablemente el esquema más popular en la actualidad. Se utiliza en DirectX y también existen extensiones del mismo en OpenGL. Su funcionamiento se puede considerar un desarrollo adicional de la CCC. El tamaño del bloque para la S3TC es de 4x4 píxeles, que se comprimen a 64 bits. Se almacenan dos colores de base como 16 bits cada uno, y cada píxel almacena un índice 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 línea dentro del espacio RGB. La tasa de compresión de S3TC es 4 bpp. Una desventaja del S3TC es que solo se pueden utilizar cuatro colores por bloque.The S3TC method of texture compression, by Iourcha et al. [3] is probably the most popular scheme today. It is used in DirectX and there are also extensions of it in OpenGL. Its operation can be considered an additional development of the CCC. The block size for the S3TC is 4x4 pixels, which are compressed at 64 bits. Two base colors are stored as 16 bits each, and each pixel stores a two-bit index in a local color palette that is made up of the two base colors and two additional colors between the base colors. This means that all colors are in a line within the RGB space. The compression rate of S3TC is 4 bpp. A disadvantage of the S3TC is that only four colors can be used per block.
Fenney [4] introduce un esquema radicalmente distinto que se utiliza en la plataforma MBX de hardware para gráficos en teléfonos móviles. Este esquema utiliza dos imágenes de baja resolución, y durante la descompresión se incrementa bilinealmente la escala de las mismas. Cada píxel también almacena un factor de mezcla entre estas dos imágenes de escala ampliada. Se describen la compresión a 4 bpp ya 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 la información de bloques de imagen vecinos es necesaria durante la descompresión, lo que complica gravemente la descompresión.Fenney [4] introduces a radically different scheme that is used in the MBX hardware platform for graphics on mobile phones. This scheme uses two low resolution images, and during decompression the scale of them is increased bi-linearly. Each pixel also stores a mixing factor between these two enlarged images. Compression at 4 bpp and 2 bpp are described. 64 bits are used for each block. The main disadvantage of the Fenney scheme, which makes it less attractive in real implementations, is that information from neighboring image blocks is necessary during decompression, which seriously complicates decompression.
PACKMAN es un método de compresión de texturas desarrollado recientemente por Strom y Akenine-Moller [5], y más ampliamente divulgado en Strom y Akenine-Moller, PACKMAN: Texture Compression for Mobile Phones, In Sketches program at ACM SIGGRAPH (2004). Codifica un bloque de 2x4 téxeles (píxeles) a 32 bits. Solo se utiliza un color por bloque, pero en cada píxel se puede modificar la intensidad de este color. El principal objetivo de PACKMAN era conseguir la mínima complejidad de descompresión. En PACKMAN la crominancia está muy cuantificada, lo que puede acarrear artefactos de bloque.PACKMAN is a texture compression method recently developed by Strom and Akenine-Moller [5], and more widely disclosed in Strom and Akenine-Moller, PACKMAN: Texture Compression for Mobile Phones, In Sketches program at ACM SIGGRAPH (2004). Encode a block of 2x4 pixels (pixels) to 32 bits. Only one color is used per block, but in each pixel the intensity of this color can be modified. The main objective of PACKMAN was to achieve the minimum complexity of decompression. In PACKMAN the chrominance is highly quantified, which can lead to block artifacts.
Para mejorar PACKMAN, Strom y Akenine-Moller han desarrollado un método mejorado de compresión denominado iPACKMAN/Ericsson Texture Compression (ETC) [6,7]. En iPACKMAN/ETC se codifican en común dos bloques 2x4 de imagen, lo que permite la codificación diferencial de los colores. Esto ha hecho posible disponer de una cuantificación más fina de los colores, lo que produce un aumento de la calidad en aproximadamente 3 dB. Por tanto, este método de compresión ha superado en términos de calidad a la S3TC y actualmente constituye el método/sistema de compresión de texturas de mayor calidad públicamente conocido.To improve PACKMAN, Strom and Akenine-Moller have developed an improved compression method called iPACKMAN / Ericsson Texture Compression (ETC) [6,7]. In iPACKMAN / ETC, two 2x4 blocks of image are coded in common, allowing differential color coding. This has made it possible to have a finer quantification of colors, resulting in an increase in quality by approximately 3 dB. Therefore, this compression method has surpassed the S3TC in terms of quality and currently constitutes the method / compression system of higher quality publicly known textures.
Aún existe la necesidad de mejorar la compresión de imágenes y, en particular, en términos de compresión y descompresión de bloques de imagen problemáticos que presentan determinadas características de color que los esquemas de procesamiento de imágenes de la técnica anterior no pueden gestionar de manera eficaz con alta calidad. Estos bloques de imagen problemáticos incluyen bloques que presentan transiciones con variación lenta entre dos o más colores.There is still a need to improve image compression and, in particular, in terms of compression and decompression of problematic image blocks that have certain color characteristics that prior art image processing schemes cannot effectively manage with high quality. These problematic image blocks include blocks that present transitions with slow variation between two or more colors.
CompendioCompendium
La presente invención supera estos y otros inconvenientes de los arreglos de la técnica anterior.The present invention overcomes these and other drawbacks of prior art arrangements.
Es un objeto general de la presente invención proporcionar un sistema de procesamiento de imágenes que pueda gestionar eficazmente bloques de imagen que presenten transiciones con variación lenta entre dos o más colores. Este y otros objetos se logran mediante la invención tal como se define por las reivindicaciones adjuntas.It is a general object of the present invention to provide an image processing system that can effectively manage image blocks that present transitions with slow variation between two or more colors. This and other objects are achieved by the invention as defined by the appended claims.
En pocas palabras, la presente invención implica un procesamiento de imágenes en forma de codificación (compresión) de una imagen y descodificación (descompresión) de una imagen codificada (comprimida).Simply put, the present invention involves image processing in the form of encoding (compression) of an image and decoding (decompression) of an encoded (compressed) image.
Según la invención, se descompone una imagen a codificar en una serie de bloques de imagen que comprenden múltiples elementos de imagen (píxeles, téxeles o vóxeles). Un bloque de imagen comprende preferiblemente dieciséis elementos de imagen y tiene un tamaño 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 inglés) de 24 bits. Posteriormente se codifican los bloques de imagen.According to the invention, an image to be encoded is broken down into a series of image blocks comprising multiple image elements (pixels, pixels or voxels). An image block preferably comprises sixteen image elements and has a size of 2mx2n image elements, where m and n are preferably 2. Each image element of a block is characterized by an image element property, preferably a color, for example , a 24-bit RGB (red, blue, green) color. Subsequently, the image blocks are encoded.
En esta codificación de bloques (con pérdida) se asignan pesos de color a al menos un subconjunto de los elementos de imagen del bloque de imagen. Después se determinan al menos dos claves de color que son representaciones de al menos dos valores de color, basándose al menos parcialmente en los pesos de color asignados. La representación 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 serán 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. Además, 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.In this block coding (with loss) color weights are assigned to at least a subset of the image elements of the image block. Then at least two color keys are determined which are representations of at least two color values, based at least partially on the assigned color weights. The encoded or compressed representation generated from the image block comprises the at least two color keys, which can be considered as quantified color values. Consequently, the original colors of the image elements of the image block will be represented by color representations derived from the at least two color values, obtainable in turn from the at least two color keys. In addition, the color representations of the image elements in the at least one subset can be derived from combinations of the at least two color values weighted by the assigned color weights.
Esta manera de representar bloques de imagen gestiona de manera eficaz transiciones con variación 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 descripción de las realizaciones de la invención se apreciarán otras ventajas ofrecidas por la presente invención.This way of representing image blocks effectively manages transitions with smooth variation of at least two colors within an image block, and such color transitions and gradients that extend to neighboring blocks. After reading the following description of the embodiments of the invention other advantages offered by the present invention will be appreciated.
Durante la decodificación o descompresión, se determinan los al menos dos valores de color basándose en las al menos dos claves de color. Después se asignan pesos de color a un elemento de imagen a descodificar. Por último, se calcula una representación de color a utilizar para este elemento de imagen basándose en los pesos de color proporcionados y los al menos dos valores de color determinados.During decoding or decompression, at least two color values are determined based on the at least two color keys. Then color weights are assigned to an image element to be decoded. Finally, a color representation to be used for this image element is calculated based on the color weights provided and the at least two color values determined.
La presente invención también enseña sistemas para codificar imágenes y bloques de imagen, sistemas para descodificar imágenes codificadas y bloques de imagen y terminales de usuario que albergan tales sistemas.The present invention also teaches systems for encoding images and image blocks, systems for decoding encoded images and image blocks and user terminals that house such systems.
Breve descripción de los dibujosBrief description of the drawings
La invención, junto con objetos y ventajas adicionales de la misma, se puede entender mejor haciendo referencia a la siguiente descripción tomada junto con los dibujos adjuntos, en los cuales:The invention, together with additional objects and advantages thereof, can be better understood by referring to the following description taken together with the accompanying drawings, in which:
la Figura 1 es un diagrama de flujo que ilustra un método para comprimir/codificar una imagen y un bloque de imagen según la presente invención;Figure 1 is a flow chart illustrating a method for compressing / encoding an image and an image block according to the present invention;
la Figura 2 es una ilustración de un ejemplo de un bloque de imagen según la presente invención;Figure 2 is an illustration of an example of an image block according to the present invention;
la Figura 3 es un dibujo que ilustra esquemáticamente la asignación de pesos de color según una realización de la presente invención;Figure 3 is a drawing schematically illustrating the assignment of color weights according to an embodiment of the present invention;
a Figura 4 es una ilustración de una representación comprimida de un bloque de imagen según una realización de la presente invención;a Figure 4 is an illustration of a compressed representation of an image block according to an embodiment of the present invention;
a Figura 5 es un dibujo que ilustra esquemáticamente la asignación de pesos de color según otra realización de la presente invención;a Figure 5 is a drawing schematically illustrating the assignment of color weights according to another embodiment of the present invention;
a Figura 6 es una ilustración de una representación comprimida de un bloque de imagen según otra realización de a presente invención;Figure 6 is an illustration of a compressed representation of an image block according to another embodiment of the present invention;
a Figura 7 es un dibujo que ilustra esquemáticamente la asignación de pesos de color según una realización adicional de la presente invención;a Figure 7 is a drawing schematically illustrating the assignment of color weights according to a further embodiment of the present invention;
a Figura 8 es un dibujo que ilustra esquemáticamente la asignación de pesos de color según otra realización más de a presente invención;Figure 8 is a drawing that schematically illustrates the assignment of color weights according to another embodiment of the present invention;
a Figura 9 es un diagrama de flujo que ilustra con más detalle una realización del paso determinante de la Figura 1; a Figura 10 es un diagrama de flujo de pasos adicionales del método de codificación/compresión de imágenes de la Figura 1 según una implementación multimodal de la presente invención;a Figure 9 is a flow chart illustrating in more detail an embodiment of the determining step of Figure 1; a Figure 10 is a flow chart of additional steps of the image coding / compression method of Figure 1 according to a multimodal implementation of the present invention;
a Figura 11 es un diagrama de flujo que ilustra con más detalle realizaciones de pasos de compresión de la Figura 10;a Figure 11 is a flow chart illustrating in more detail embodiments of compression steps of Figure 10;
a Figura 12A es un diagrama que ilustra la distribución de colores de elementos de imagen de un bloque de imagen que ventajosamente se puede comprimir según un modo de la implementación multimodal;a Figure 12A is a diagram illustrating the color distribution of image elements of an image block that can advantageously be compressed according to a mode of multimodal implementation;
a Figura 12B es un diagrama que ilustra representaciones de color generadas según un modo de la implementación 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 distribución de colores de elementos de imagen de otro bloque de imagen que ventajosamente se puede comprimir según otro modo de la implementación multimodal;a Figure 12B is a diagram illustrating color representations generated according to a mode of multimodal implementation and suitable for representing the colors of the image elements illustrated in Figure 12A; a Figure 13A is a diagram illustrating the color distribution of image elements of another image block that can advantageously be compressed according to another mode of multimodal implementation;
a Figura 13B es un diagrama que ilustra representaciones de color generadas según otro modo de la implementación multimodal y adecuadas para representar los colores de los elementos de imagen ilustrados en la Figura 13A;a Figure 13B is a diagram illustrating color representations generated according to another mode of multimodal implementation and suitable for representing the colors of the image elements illustrated in Figure 13A;
as Figuras 14 a 17 son ilustraciones de representaciones comprimidas de un bloque de imagen según la implementación multimodal;Figures 14 to 17 are illustrations of compressed representations of an image block according to the multimodal implementation;
la Figura 18 es un diagrama de flujo de un método para descodificar/descomprimir una imagen comprimida y el bloque de imagen según la presente invención;Figure 18 is a flow chart of a method for decoding / decompressing a compressed image and the image block according to the present invention;
a Figura 19 es un diagrama de flujo que ilustra pasos adicionales del método de descodificación/descompresión de la Figura 20 para una implementación multimodal;a Figure 19 is a flow chart illustrating additional steps of the decoding / decompression method of Figure 20 for a multimodal implementation;
la Figura 20 es un diagrama de flujo que ilustra con más detalle realizaciones del paso de descompresión de la Figura 19;Figure 20 is a flow chart illustrating in more detail embodiments of the decompression step of Figure 19;
la Figura 21 es un diagrama de flujo que ilustra con más detalle otra realización del paso de descompresión de la Figura 19;Figure 21 is a flow chart illustrating in more detail another embodiment of the decompression step of Figure 19;
la Figura 22 ilustra esquemáticamente un ejemplo de un terminal de usuario con un codificador y descodificador de imágenes según la presente invención;Figure 22 schematically illustrates an example of a user terminal with an image encoder and decoder according to the present invention;
la Figura 23 es un diagrama de bloques que ilustra esquemáticamente una realización de un codificador de imágenes según la presente invención;Figure 23 is a block diagram schematically illustrating an embodiment of an image encoder according to the present invention;
la Figura 24 es un diagrama de bloques que ilustra esquemáticamente una realización de un codificador de bloques según la presente invención;Figure 24 is a block diagram schematically illustrating an embodiment of a block encoder according to the present invention;
la Figura 25 es un diagrama de bloques que ilustra esquemáticamente otra realización de un codificador de bloques según la presente invención;Figure 25 is a block diagram schematically illustrating another embodiment of a block encoder according to the present invention;
la Figura 26 es un diagrama de bloques que ilustra esquemáticamente una realización de un descodificador de imágenes según la presente invención;Figure 26 is a block diagram schematically illustrating an embodiment of an image decoder according to the present invention;
la Figura 27 es un diagrama de bloques que ilustra esquemáticamente una realización de un descodificador de bloques según la presente invención; y Figure 27 is a block diagram schematically illustrating an embodiment of a block decoder according to the present invention; Y
la Figura 28 es un diagrama de bloques que ilustra esquemáticamente otra realización de un descodificador de bloques según la presente invención.Figure 28 is a block diagram schematically illustrating another embodiment of a block decoder according to the present invention.
Descripción detalladaDetailed description
En los dibujos se utilizarán las mismas referencias para elementos correspondientes o similares.In the drawings the same references will be used for corresponding or similar elements.
La presente invención se refiere al procesamiento de imágenes y gráfico, y en particular a la codificación o compresión de imágenes y bloques de imagen y a la descodificación o descompresión de imágenes y bloques de imagen codificados (comprimidos).The present invention relates to the processing of images and graphics, and in particular the coding or compression of images and image blocks and the decoding or decompression of encoded images and compressed image blocks.
En general, y según la invención, durante la codificación de imágenes se descompone o divide una imagen en una serie de bloques de imagen. Cada uno de tales bloques de imagen comprende entonces múltiples elementos de imagen que tienen, entre otras cosas, un color determinado. Se codifican o comprimen los bloques de imagen para generar una representación codificada/comprimida de la imagen.In general, and according to the invention, during image coding an image is broken down or divided into a series of image blocks. Each of such image blocks then comprises multiple image elements that have, among other things, a certain color. Image blocks are encoded or compressed to generate an encoded / compressed representation of the image.
Cuando posteriormente hay que representar, por ejemplo, mostrar en una pantalla, una imagen o gráfico primitivos codificados, se identifican y descodifican los elementos de imagen relevantes de los bloques de imagen codificados. Después se utilizan estos elementos de imagen descodificados para generar una representación descodificada de la imagen o gráficos originales primitivos.When, later, for example, a coded primitive image or graphic must be displayed on a screen, the relevant image elements of the encoded image blocks are identified and decoded. These decoded image elements are then used to generate a decoded representation of the original original image or graphics.
La presente invención está bien adaptada para el uso con gráficos en tres dimensiones (3D), tales como juegos, mapas en 3D y escenas en 3D, mensajes, por ejemplo mensajes animados, protectores de pantalla, interfaces hombre-máquina (MMI, por sus siglas en inglés), etc., pero no se limita a esto. Así, también se podría emplear la invención para codificar otros tipos de imágenes o gráficos, por ejemplo imágenes en una dimensión (1D), en dos dimensiones (2D) o en 3D.The present invention is well adapted for use with three-dimensional (3D) graphics, such as games, 3D maps and 3D scenes, messages, for example animated messages, screen savers, human-machine interfaces (MMI, for their acronym in English), etc., but not limited to this. Thus, the invention could also be used to encode other types of images or graphics, for example images in one dimension (1D), in two dimensions (2D) or in 3D.
En el procesamiento de gráficos en 3D, típicamente se crean varios triángulos y se determinan las correspondientes coordenadas en pantalla de las esquinas de estos triángulos. A cada triángulo se le asigna ("se pega") una imagen (o parte de una imagen), o una denominada "textura". Sin embargo, la gestión de texturas es costosa para un sistema gráfico, tanto en términos de memoria utilizada para el almacenamiento de texturas como en términos 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 teléfonos móviles, que tienen una capacidad de memoria y ancho de banda limitados. En consecuencia, a menudo se emplea un esquema de codificación de texturas o de imágenes. En un esquema de este tipo, típicamente se descompone o se divide una textura en una serie de bloques de imagen que comprenden múltiples téxeles. A continuación se codifican los bloques de imagen y se almacenan en una memoria. Téngase en cuenta que el tamaño de un bloque de imagen codificado (una versión codificada de un bloque de imagen) es más pequeño que el tamaño correspondiente de la versión no codificada del bloque de imagen.In 3D graphics processing, several triangles are typically created and the corresponding screen coordinates of the corners of these triangles are determined. Each triangle is assigned ("pasted") an image (or part of an image), or a so-called "texture". However, texture management is expensive for a graphic system, both in terms of memory used for texture storage and in terms of memory bandwidth during memory accesses, when textures are retrieved from memory. This is a problem, in particular, for thin clients, for example mobile units and phones, which have limited memory capacity and bandwidth. Consequently, a texture or image coding scheme is often used. In such a scheme, a texture is typically broken down or divided into a series of image blocks comprising multiple pixels. The image blocks are then encoded and stored in a memory. Note that the size of an encoded image block (an encoded version of an image block) is smaller than the corresponding size of the uncoded version of the image block.
En la presente invención, la expresión "elemento de imagen" se refiere a un elemento de un bloque de imagen o representación codificada de un bloque de imagen. Este bloque de imagen, a su vez, corresponde a una parte de una imagen o textura. Por tanto, según la invención un elemento de imagen podría ser un téxel (elemento de textura) de una textura (1D, 2D, 3D), un píxel de una imagen (1D o 2D) o un vóxel (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. Además, el término "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 invención, incluidos, pero sin imitación, fotos, texturas de tipo juego, texto, dibujos, etc.In the present invention, the expression "image element" refers to an element of an image block or encoded representation of an image block. This image block, in turn, corresponds to a part of an image or texture. Therefore, according to the invention an image element could be a texel (texture element) of a texture (1D, 2D, 3D), a pixel of an image (1D or 2D) or a voxel (volume element) of a 3D image. In general, an image element is characterized by certain image element properties, such as a color value. In addition, the term "image" is used in the following to indicate any image or texture in 1D, 2D or 3D that can be encoded and decoded by means of the present invention, including, but not limited to, photos, game-type textures , text, drawings, etc.
La presente invención proporciona un procesamiento de imágenes que es particularmente adecuado para comprimir y descomprimir imágenes y bloques de imagen con transiciones de variación lenta entre al menos dos colores. En los esquemas de la técnica anterior, discutidos en la sección 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 típicamente cuatro valores de color. Así, cada elemento de imagen tiene un índice de color asociado con uno de los colores de la paleta de colores. Con una solución de este tipo, generalmente es difícil procesar elementos de imagen que presenten transiciones de color con variación lenta.The present invention provides image processing that is particularly suitable for compressing and decompressing images and image blocks with slowly varying transitions between at least two colors. In the prior art schemes, discussed in the background section, by means of color keys (S3TC) or one or more color keys and one or more intensity / color modifiers (PACKMAN and iPACKMAN / ETC) is formed in space of color a color palette that typically comprises four color values. Thus, each image element has a color index associated with one of the colors in the color palette. With such a solution, it is generally difficult to process image elements that have color transitions with slow variation.
En claro contraste con estos esquemas de la técnica anterior, la presente invención asigna diferentes pesos de color a elementos de imagen de un bloque de imagen. Después se determinan los colores a utilizar para el bloque de imagen basándose, al menos en parte, en los pesos de color asignados. Esto significa que los colores originales de los elementos de imagen se representarán por representaciones de color derivables de combinaciones de los colores determinados, ponderadas mediante los pesos de color asignados. Potencialmente, esto permite la utilización de representaciones de color únicas, 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. Además, los pesos de color se pueden configurar de manera que también se pueden representar con alta calidad de imagen bloques problemáticos que presenten transiciones de color con variación lenta. In clear contrast to these prior art schemes, the present invention assigns different color weights to image elements of an image block. The colors to be used for the image block are then determined based, at least in part, on the assigned color weights. This means that the original colors of the image elements will be represented by color representations derived from combinations of the determined colors, weighted by the assigned color weights. Potentially, this allows the use of unique color representations, depending on the assigned color weights, for each image element of the block, which in turn means a much larger color palette. In addition, color weights can be configured so that problematic blocks that display color transitions with slow variation can also be represented with high image quality.
CompresiónCompression
La Figura 1 ilustra un método (con pérdidas) para codificar una imagen según la presente invención. En un primer paso S1, se descompone o divide la imagen en una serie de bloques de imagen. Cada uno de tales bloques de imagen comprende entonces múltiples elementos de imagen. En una realización preferida de la invención, un bloque de imagen comprende dieciséis elementos de imagen (píxeles, téxeles o vóxeles) y tiene un tamaño de 2mx2n elementos de imagen, donde m=4-n y n=0, 1, 2, 3, 4. Más preferiblemente, m y n son ambos 2. También sería posible utilizar un bloque de imagen de tamaño 2m x 2n o 2m x 2n x 2p elementos de imagen, donde m, n, p son cero o números enteros positivos con la condición de que no todos los m, n, p puedan ser cero simultáneamente. La Figura 2 ilustra esquemáticamente un ejemplo de un bloque 600 de imagen con dieciséis elementos 610 de imagen según la presente invención. En una realización alternativa de la presente invención, se descompone la imagen en una serie de sub-bloques de imagen, que preferiblemente tienen un tamaño de 2x4 o 4x2 elementos de imagen. En este caso, se podrían gestionar juntos dos de tales sub-bloques durante la compresión 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.Figure 1 illustrates a method (with losses) for encoding an image according to the present invention. In a first step S1, the image is broken down or divided into a series of image blocks. Each of such image blocks then comprises multiple image elements. In a preferred embodiment of the invention, an image block comprises sixteen image elements (pixels, pixels or voxels) and has a size of 2mx2n image elements, where m = 4-nyn = 0, 1, 2, 3, 4 More preferably, myn are both 2. It would also be possible to use an image block of size 2m x 2n or 2m x 2n x 2p image elements, where m, n, p are zero or positive integers with the condition that no all m, n, p can be zero simultaneously. Figure 2 schematically illustrates an example of an image block 600 with sixteen image elements 610 according to the present invention. In an alternative embodiment of the present invention, the image is broken down into a series of image sub-blocks, which preferably have a size of 2x4 or 4x2 image elements. In this case, two such sub-blocks could be managed together during compression to form a 4x4 600 block as illustrated in Figure 2. Returning to Figure 1, in step S1 the entire image block is preferably decomposed into Image blocks (not overlapping). However, in some applications only a part of an image is encoded and, therefore, only this part is broken down into image blocks.
Los pasos siguientes S2 y S4 realizan una codificación o compresión 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 esquemáticamente por la línea L1. Los pesos de color se determinan preferiblemente basándose en la posición relativa que los elementos de imagen del al menos un subconjunto tienen en el bloque de imagen. Estos pesos de color se utilizarán durante la descompresión 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, supóngase 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 vvy para el elemento de imagen que tiene la posición (x,y) en el bloque de imagen. Durante la compresión, la representación de imagen de este elemento de imagen será Wq’C0 W{vClt es decir, una combinación, en este caso una combinación lineal, ponderada de los dos colores.The following steps S2 and S4 encode or compress the image blocks. First, in step S2, color weights are assigned to at least a subset of the image elements of the image block, which is schematically illustrated by the line L1. Color weights are preferably determined based on the relative position that the image elements of the at least one subset have in the image block. These color weights will be used during decompression to weigh different colors that are determined for the image block, in order to generate color representations used to represent the original ("true") colors of the image elements. For example, suppose that two colors (C0 and Ci) are determined for the current image block. The color weights assigned in this step S2 can then be w0 'v and vvy for the image element that has the position (x, y) in the image block. During compression, the image representation of this image element will be Wq'C0 W {vClt i.e. a combination, in this case a linear, weighted combination of the two colors.
Como es bien conocido en la técnica, un color comprende típicamente múltiples 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 gestión de imágenes y gráficos. En ese caso, los múltiples pesos de color asignados en el paso S2 podrían considerarse como un vector de pesos de colorAs is well known in the art, a color typically comprises multiple color components, very often three color components, depending on the proprietary color space used. For example, the colors can be RGB colors (red, green, blue), colors in the YUV space or the YCrCb space, or any other proprietary color space used in the processing and management of images and graphics. In that case, the multiple color weights assigned in step S2 could be considered as a vector of color weights
. En este caso, los elementos de componente individual en un vector de pesos se . In this case, the individual component elements in a weight vector are
podrían fijar de forma individual o al menos podrían ser iguales. En el caso en que < o < o - iv¿0, el vector dethey could set individually or at least they could be the same. In the case where <or <or - iv¿0, the vector of
pesos solo comprende dos pesos por elemento de imagen en este ejemplo ilustrativo.pesos only includes two pesos per image element in this illustrative example.
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 línea L1.Color weights are preferably assigned for each image element in at least a subset of the image elements of the blocks, which is represented by the line L1.
En una primera realización, el bloque de imagen comprende N elementos de imagen, N es un número 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 básicamente 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.In a first embodiment, the image block comprises N image elements, N is an integer greater than one, and the subset comprises M image elements, where 0 <M <N. This means that no color weights are assigned for the remaining N-M image elements. In that case, the original color of this or these remaining image elements is represented by one of the color keys to be determined for the image block. However, this basically corresponds to setting all the component elements of one of the color weight vectors to 1 and setting all the component elements of the other or other color weight vectors to 0.
Por lo tanto, en otra implementación preferida de la presente invención, se asignan pesos de color a todos los elementos de imagen del bloque, básicamente mediante la repetición del paso S2 para cada elemento de imagen. En esta realización, al menos uno de los pesos de color asignados a al menos un elemento de imagen es preferiblemente distinto de 0, 1 y -1.Therefore, in another preferred implementation of the present invention, color weights are assigned to all image elements of the block, basically by repeating step S2 for each image element. In this embodiment, at least one of the color weights assigned to at least one image element is preferably different from 0, 1 and -1.
En un siguiente paso S3, se determinan al menos dos claves de color para el bloque de imagen basándose 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 podrían 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 gestión de imágenes y gráficos. In a next step S3, at least two color keys are determined for the image block based on, or using, the assigned color weights. These at least two color keys are representations of at least two color values. As indicated above, the color values could be RGB colors (red, green, blue), colors in the YUV space or in the YCrCb space, or any other proprietary color space used in the processing and management of images and graphics .
Las claves de color están preferiblemente en el mismo formato (espacio) de color que la imagen. Sin embargo, en algunos casos puede ser útil convertir la imagen a un espacio de color distinto, es decir, tener las claves de color en un primer espacio de color y la imagen original en un segundo espacio de color distinto.The color keys are preferably in the same color format (space) as the image. However, in some cases it may be useful to convert the image to a different color space, that is, to have the color keys in a first color space and the original image in a second different color space.
En un primer arreglo descrito en la presente memoria, en este paso S3 se determinan dos claves de color basándose en los pesos de color asignados. Sin embargo, en una implementación preferida de la presente invención se utilizan tres claves de color. Incluso a veces se determinan en lugar de ello cuatro o más claves de color basándose en los pesos de color. Estas múltiples claves representan entonces tres, cuatro o más valores de color. Conforme a la presente invención es posible, basando la determinación 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 generación de representaciones de color con transiciones de color de variación lenta.In a first arrangement described herein, in this step S3 two color keys are determined based on the assigned color weights. However, in a preferred implementation of the present invention three color keys are used. Even four or more color keys are sometimes determined instead based on the color weights. These multiple keys then represent three, four or more color values. In accordance with the present invention it is possible, based on the determination of color keys on the assigned color weights, to determine color keys that give rise to high image quality and allow the generation of color representations with slow-changing color transitions .
En un siguiente paso S4, los colores originales de los múltiples 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. Además, 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.In a next step S4, the original colors of the multiple image elements of the block are represented by color representations derived from the at least two color values, which in turn are represented by the at least two color keys determined in the step S3. In addition, the color representations of the image elements in the at least one subset, that is, those image elements for which color weights were assigned in step S2, can be derived from combinations of the at least two values of color weighted using the assigned color weights.
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 múltiples valores de color. Preferiblemente, se repiten los pasos S2 a S4 para todos los bloques de imagen proporcionados durante la descomposición del paso S1 (lo que se ilustra esquemáticamente por la línea L2). El resultado es, entonces, una secuencia o archivo de bloques de imagen codificados. Se podrían 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 descomposición en bloques. Después, el método termina.If the at least one subset comprises a first subset of the image element of the block, the color representations of these image elements may be derived from combinations of the at least two color values weighted by the assigned color weights. However, the color representations of image elements in a second remaining subset of the image elements of the block are selected directly from the color values and therefore do not constitute combinations of multiple color values. Preferably, steps S2 to S4 are repeated for all the image blocks provided during the decomposition of step S1 (which is schematically illustrated by line L2). The result is, then, a sequence or file of encoded image blocks. The encoded image blocks (encoded representations of the image blocks) could be sorted in a file, from left to right and from top to bottom in the same order in which they were broken down in step S1 of block decomposition. Then the method ends.
Se podría enviar la imagen codificada a una memoria para almacenarse allí hasta una ulterior representación, por ejemplo, visualización, de la imagen. Además, se podría enviar a un transmisor la imagen codificada, en forma de una señal de representaciones de bloque codificadas, para transmitirla (de modo inalámbrico o por cable) a otra unidad.The encoded image could be sent to a memory to be stored there until further representation, for example, visualization, of the image. In addition, the encoded image, in the form of an encoded block representation signal, could be sent to a transmitter for transmission (wirelessly or by cable) to another unit.
La Figura 3 es una ilustración esquemática de un bloque 600 de imagen en una imagen o textura a comprimir según la presente invención. Aquí 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 ampliación bilineal de escala en la que, sin embargo, se almacenan como una representación comprimida del bloque de imagen todos los colores necesarios para la ampliación 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 según este arreglo.Figure 3 is a schematic illustration of an image block 600 in an image or texture to be compressed according to the present invention. Here four color keys have to be determined for the image block 600. Each of the four color keys represents a respective color value, whose red components are denoted by R 0 , R 1 , R 2 and R 3 . This allows a bilinear enlargement of scale in which, however, all the colors necessary for the bilinear enlargement of scale are stored as a compressed representation of the image block. The image elements 610 that form the corners of the image block 600 have color weights of only ones and zeros. Table 1 illustrates the color weights assigned to the image elements 610 in the block according to this arrangement.
Tabla 1 - pesos de colorTable 1 - color weights
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, tendrán componentes de rojo conforme a la Tabla 2 a continuación.This means that the color representations of the image block illustrated in Figure 3, and having color weights assigned according to Table 1 above, will have red components according to Table 2 below.
Tabla 2 - combinaciones de colorTable 2 - color combinations
Preferiblemente, los componentes de azul y verde se gestionan de la misma manera, es decir, básicamente intercambiando Rz por Bz o Gz , en donde z=0, 1, 2, 3.Preferably, the blue and green components are managed in the same way, that is, basically by exchanging R z for B z or G z , where 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 (R0, 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.As can be seen in Table 2, the components of the red color (green and blue) of twelve of the image elements can be derived as weighted linear combinations of at least the color values (R 0 , R i , R 2 , R 3 ) represented by the four color keys. However, the red (green and blue) color components of the four corner image elements each derive directly from one of the color values.
Cuando uno se mueve a lo largo de la primera fila (de Ro a Ri ), la tercera fila (de R2 a R3), la primera columna (de Ro 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 monótonamente (salvo que los dos valores extremos sean iguales). Por ejemplo, si R1>R0 , el valor del componente de rojo aumenta monótonamente a lo largo de la primera fila, es decir, cuando se va del elemento de imagen (0,0) al elemento de imagen (0,3). Análogamente, si R2<Ro , el valor del componente de rojo disminuye monótonamente a lo largo de la primera columna (del elemento de imagen (0,0) al (3,0)). Si se utilizan los mismos pesos de color también para los componentes del color verde y/o el azul, también estos cambiarán monótonamente 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 monótonamente 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.When one moves along the first row (from R or to R i ), the third row (from R 2 to R 3 ), the first column (from R or to R 2 ) and the third column (from R 1 to R 3 ) of Table 2, the red color component of the color representations of the image elements in these rows and columns changes monotonously (unless the two extreme values are equal). For example, if R 1 > R 0 , the value of the red component increases monotonically along the first row, that is, when you go from the image element (0,0) to the image element (0,3) . Similarly, if R 2 <R o , the value of the red component decreases monotonously along the first column (of the image element (0,0) to (3,0)). If the same color weights are also used for green and / or blue components, they will also change monotonously for these rows and columns. A row or column is called a "one-dimensional array of image elements." This means that at least one color component of the color representations changes monotonously along at least one one-dimensional array of image elements. This allows smooth color transitions, and therefore image blocks having such color distributions, can be represented with high image quality.
La Figura 4 ilustra una representación comprimida 700 del bloque de imagen ilustrado en la Figura 3 que ha sido comprimido. La representación 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. Téngase 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.Figure 4 illustrates a compressed representation 700 of the image block illustrated in Figure 3 that has been compressed. The representation 700 (coded or compressed image block) comprises a first color key 710, a second color key 720, a third color key 730 and a fourth color key 740. Note that the respective order of the keys 710, 720, 730, 740 of the encoded image block 700 may be different from that illustrated in the Figure.
En este caso, los pesos de color asignados a los elementos de imagen del bloque están predefinidos y se utilizarán para todos los bloques de imagen de la imagen comprimida. Esto significa que, si se comprimen según este esquema todos los bloques de imagen de una imagen, se utilizarán para todos los bloques de imagen los pesos de color enumerados en la Tabla 1. Sin embargo, téngase en cuenta que las cuatro claves de color pueden ser distintas para bloques distintos, lo que origina en último término distintas representaciones de color para los bloques de imagen.In this case, the color weights assigned to the image elements of the block are predefined and will be used for all image blocks of the compressed image. This means that if all image blocks of an image are compressed according to this scheme, the color weights listed in Table 1 will be used for all image blocks. However, please note that the four color keys can be different for different blocks, which ultimately results in different color representations for the image blocks.
Sin embargo, se prevé que se pueda incluir, como parte de la representación 700 del bloque comprimido, información acerca de los pesos de color asignados a elementos de imagen del bloque de imagen. Por ejemplo, supóngase que existen múltiples 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 representación 700 de bloque comprimida comprende preferiblemente un índice 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 único (0bin y 1bin) como clave de pesos para discriminar entre dos conjuntos de pesos, mientras que se requieren dos o más bits si existen más de dos conjuntos. En una solución de este tipo, se pueden comprimir distintos bloques de imagen de una imagen utilizando distintas distribuciones de pesos de color.However, it is envisaged that information about the color weights assigned to image elements of the image block may be included as part of representation 700 of the compressed block. For example, Suppose there are multiple sets of weights that can be used for image blocks. Each such set of weights then comprises color weights assigned to image elements of at least a subset of the block elements. A first of such sets of weights may include the color weights indicated in Table 1 above. Then, a second set can have different weights for at least one of these image elements. In such a case, the compressed block representation 700 preferably comprises a weight set index or weight key representing the set of color weights used for the current image block. A single bit (0bin and 1bin) can be used as a weight key to discriminate between two sets of weights, while two or more bits are required if there are more than two sets. In such a solution, different image blocks of an image can be compressed using different color weight distributions.
Si se asignan 64 bits para el bloque 700 de imagen comprimido, se pueden utilizar 16 bits porcada 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 más bits en los componentes de verde, ya que el componente de verde aporta una contribución desproporcionada a la percepción de la intensidad.If 64 bits are allocated for the compressed image block 700, 16 bits can be used per 710, 720, 730, 740 color key and each 710, 720, 730, 740 color key can be in the form of RGB565. Preferably, more bits are invested in the green components, since the green component makes a disproportionate contribution to the perception of intensity.
Sin embargo, el arreglo precedente se utiliza preferiblemente como un modo auxiliar al esquema iPACKMAN/ETC antes mencionado. En tal caso, solo están disponibles 57 bits para codificar las cuatro claves 710, 720, 730, 740 de color (los siete bits restantes se utilizarán como índice 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 solución podría ser utilizar un formato RGB554, lo que daría 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.However, the preceding arrangement is preferably used as an auxiliary mode to the aforementioned iPACKMAN / ETC scheme. In this case, only 57 bits are available to encode the four 710, 720, 730, 740 color keys (the remaining seven bits will be used as a mode index to discriminate between this auxiliary mode, iPACKMAN / ETC and other auxiliary modes). Four 710, 720, 730, 740 color keys must be encoded, with three components each, using only 57 bits, and a possible solution could be to use an RGB554 format, which would result in 56 bits in total. The remaining bit can be used as a weight key or to reinforce one of the color components of one of the keys 710, 720, 730, 740.
El arreglo presentado en las Figuras 3 y 4 y en la Tabla 1 tiene el inconveniente de que la resolución 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 está en el formato RGB554. En este caso, en particular la baja resolución del componente de azul dará lugar a artefactos.The arrangement presented in Figures 3 and 4 and in Table 1 has the disadvantage that the color resolution obtainable for the 710, 720, 730, 740 color keys is quite low, especially when used as an adjunct to iPACKMAN / ETC and each key 710, 720, 730, 740 is in the RGB554 format. In this case, in particular the low resolution of the blue component will result in artifacts.
En cambio, en una implementación preferida de la presente invención se utiliza preferiblemente un plano, en lugar de la función bilineal, para aproximarse a la superficie de color y proporcionar los pesos de color. Esto se ilustra esquemáticamente en la Figura 5. En comparación con la Figura 3 y la forma de realización bilineal antes descrita, por cada bloque 600 de imagen se determinan solo tres claves de color. Esto significa que tres valores de color están representados por estas claves, y en la Figura 5 se han ilustrado los componentes de rojo (R 0 , Rh , Rv ) de estos valores de color.In contrast, in a preferred implementation of the present invention, a plane, rather than the bilinear function, is preferably used to approximate the color surface and provide the color weights. This is schematically illustrated in Figure 5. In comparison to Figure 3 and the above-described bilinear embodiment, for each image block 600 only three color keys are determined. This means that three color values are represented by these keys, and the red components (R 0 , R h , R v ) of these color values are illustrated in Figure 5.
Las representaciones de color y los pesos de color de los elementos 610 de imagen del bloque 600 de imagen se pueden calcular utilizando las siguientes fórmulas:The color representations and color weights of the image elements 610 of the image block 600 can be calculated using the following formulas:
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 (R0, 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 = [010] y w03 = [001].This means that the color representations of the image elements 610 at positions (0,0), (0,3) and (3,0) can be selected directly from the color values represented by the three keys, which results in (R0, G0, B0) for the image element (0,0), (RH, GH, BH) for the image element (3,0) and (RV, GV, BV) for the image element image (0.3) in this illustrative example. This corresponds to the following color weights for these image elements: w00 = [10 0], w30 = [010] and w03 = [001].
Los pesos de color asignados a los bloques de imagen comprimidos según esta realización de la presente invención se distribuyen entre los elementos de imagen según la Tabla 3 a continuación.The color weights assigned to the compressed image blocks according to this embodiment of the present invention are distributed among the image elements according to Table 3 below.
Tabla 3 - pesos de colorTable 3 - color weights
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 tendrán componentes de rojo según la Tabla 4 a continuación.This means that the color representations of the image block illustrated in Figure 5 and having color weights assigned according to Table 3 above will have components of red according to Table 4 below.
Tabla 4 - representaciones de colorTable 4 - color representations
Preferiblemente, los componentes de azul y verde se gestionan de la misma manera, es decir, básicamente intercambiando Rz por Bz o Gz, donde z=0, 1,2,3.Preferably, the blue and green components are managed in the same way, that is, basically by exchanging Rz for Bz or Gz, where z = 0, 1,2,3.
También en este caso los componentes de color aumentan o disminuyen monótonamente cuando uno se mueve a lo largo de la primera fila y la primera columna de la Tabla 4.Also in this case the color components increase or decrease monotonously when one moves along the first row and the first column of Table 4.
La Figura 6 ilustra una representación comprimida 700 del bloque de imagen ilustrado en la Figura 5 que ha sido comprimido según esta realización de la presente invención. La representación 700 (bloque de imagen codificado o comprimido) comprende una primera clave 710 de color, una segunda clave 720 de color y una tercera clave 730 de color. Téngase 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.Figure 6 illustrates a compressed representation 700 of the image block illustrated in Figure 5 that has been compressed according to this embodiment of the present invention. The representation 700 (encoded or compressed image block) comprises a first color key 710, a second color key 720 and a third color key 730. Note that the respective order of the keys 710, 720, 730 of the encoded image block 700 may be different from that illustrated in the Figure.
Las claves 710, 720, 730 de color se pueden representar ahora mediante la cuantificación de color RGB676, dando como resultado un tamaño total de 57 bits para las tres claves. Esto significa que esta realización se puede utilizar ventajosamente como complemento y modo auxiliar a iPACKMAN/ETC como se ha descrito más arriba. RGB676 permite una resolución mayor en comparación con la realización anterior (RGB554). Como alternativa, si se utiliza la presente invención como un esquema autónomo, 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.The 710, 720, 730 color keys can now be represented by RGB676 color quantization, resulting in a total size of 57 bits for the three keys. This means that this embodiment can be used advantageously as an adjunct and auxiliary mode to iPACKMAN / ETC as described above. RGB676 allows a higher resolution compared to the previous embodiment (RGB554). Alternatively, if the present invention is used as a stand-alone scheme, the color keys 710, 720, 730 can be represented as RGB777 and the remaining bit can be used, for example, as a weight key or to reinforce a component of color of one of the keys 710, 720, 730.
En lugar de emplear tres claves 710, 720, 730 de color que permiten el cálculo 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 más 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 expansión 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. Así, las dos claves 720, 730 podrían representar dRHdGHdBH666 y dRVdGVdBV666, donde cada uno de los componentes dWZ, W=R, G, B y z=H, V, representan un número en el intervalo [-31, 32]. Los otros dos valores de color se obtienen después según las siguientes fórmulas:Instead of using three color keys 710, 720, 730 that allow the calculation of a color value directly from a key 710, 720, 730, so-called differential keys can be used. In that case, the first color key 710 can be determined as described above, that is, comprising three quantized color components, for example in RGB777 form. The first color value (R0, G0, B0) can then be obtained directly from this first key 710 by expanding the color components quantified The other two keys 720, 730 encode, instead, a distance in the color space from this first color value. Thus, the two keys 720, 730 could represent dRHdGHdBH666 and dRVdGVdBV666, where each of the components dWZ, W = R, G, B and z = H, V, represent a number in the interval [-31, 32]. The other two color values are then obtained according to the following formulas:
G h/ v—G o cLGh/ vG h / v — G or cLGh / v
B h/ v= B o cIBh/ vB h / v = B or cIBh / v
Las realizaciones descritas en relación con las Figuras 3 y 5 presentan, sin embargo, algunas desventajas. En primer lugar, varios de los pesos de color asignados implican la división por tres o potencias de tres (9=32), que es bastante caro de realizar cuando se implementa la descompresión en hardware. Otro inconveniente de estos patrones y asignaciones de pesos de color es que es difícil 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, habrá dos elementos de imagen con una misma representación de color uno a continuación de otro, interrumpiendo la pendiente. Por lo tanto, aunque se puede representar con alta calidad una transición suave de color dentro de un bloque dado, es más difícil codificar una transición suave de color de este tipo a lo largo de bloques de imagen vecinos.The embodiments described in relation to Figures 3 and 5 have, however, some disadvantages. First, several of the color weights assigned involve division by three or powers of three (9 = 32), which is quite expensive to perform when hardware decompression is implemented . Another drawback of these patterns and assignments of color weights is that it is difficult to create constant gradient gradients. For example, if the Rh, Gh, B h of a block have been set to R0, G0, B0 in the previous block, there will be two image elements with the same color representation one after the other, interrupting the slope. Therefore, although a smooth color transition within a given block can be represented with high quality, it is more difficult to encode such a smooth color transition along neighboring image blocks.
La Figura 7 ilustra una realización de la presente invención en donde la asignación de pesos de color se lleva a cabo de manera que resuelve los dos inconvenientes antes mencionados. En esta realización, los pesos de color se seleccionan preferiblemente de manera que solo un único elemento 610 de imagen del bloque 600 tiene pesos de color constituidos por un 1 y el resto 0. Esto significa que este único 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.Figure 7 illustrates an embodiment of the present invention wherein the allocation of color weights is carried out in a manner that resolves the two aforementioned drawbacks. In this embodiment, the color weights are preferably selected so that only a single image element 610 of the block 600 has color weights consisting of 1 and the remainder 0. This means that this single image element 610, preferably an element Corner image, has its original color represented by a color value derived from only one of the three color keys.
La forma de colocar los valores de color que se ilustra en la Figura 7 da lugar a las siguientes fórmulas para calcular las representaciones de color y pesos de color de los elementos 610 de imagen en el bloque 600 de imagen:The way of placing the color values illustrated in Figure 7 results in the following formulas for calculating the color representations and color weights of the image elements 610 in the image block 600:
Los pesos de color asignados a bloques de imagen comprimidos según esta realización de la presente invención se distribuyen entre los elementos de imagen conforme a la Tabla 5 a continuación.The color weights assigned to compressed image blocks according to this embodiment of the present invention are distributed among the image elements according to Table 5 below.
Tabla 5 - pesos de colorTable 5 - color weights
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, tendrán componentes de rojo conforme a la Tabla 6 a continuación.This means that the color representations of the image block illustrated in Figure 7, and having color weights assigned according to Table 5 above, will have red components according to Table 6 below.
Tabla 6 - representaciones de colorTable 6 - color representations
Preferiblemente, los componentes de azul y verde se gestionan de la misma manera, es decir, básicamente intercambiando Rz por Bz o Gz , donde z=0, 1,2, 3.Preferably, the blue and green components are managed in the same way, that is, basically by exchanging R z for B z or G z , where z = 0, 1,2, 3.
También en este caso, los componentes de color aumentan o disminuyen monótonamente cuando uno se mueve a lo largo de la primera fila y la primera columna de la Tabla 6.Also in this case, the color components increase or decrease monotonously when one moves along the first row and the first column of Table 6.
La representación de bloque comprimida para esta realización se ilustra en la Figura 6, y la discusión con respecto a esa Figura también se aplica a esta realización.The compressed block representation for this embodiment is illustrated in Figure 6, and the discussion regarding that Figure also applies to this embodiment.
En esta realización, los pesos de color implican la división por dos o cuatro, cuya implementación en hardware es trivial. Además, la realización permite la continuidad de la pendiente de color (transiciones de color) más allá de los límites de bloque. Esto es posible fijando la Rh (o Rv ) de un bloque en la R0 del bloque precedente, lo que se traduce en una pendiente perfecta. Una ventaja adicional de esta realización reside en que la precisión de las representaciones de color que se pueden derivar de las claves de color y los pesos de color aumenta aún más, ya que el color puede variar en escalones de 1/4 en lugar de 1/3, con cada elemento de imagen.In this embodiment, the color weights imply division by two or four, whose hardware implementation is trivial. In addition, the embodiment allows the continuity of the color slope (color transitions) beyond the block limits. This is possible by setting the R h (or R v ) of a block at the R 0 of the preceding block, which translates into a perfect slope. An additional advantage of this embodiment is that the precision of the color representations that can be derived from the color keys and the color weights increases even more, since the color can vary in steps of 1/4 instead of 1 / 3, with each image element.
Se pueden obtener realizaciones adicionales basadas en el mismo tema que la Figura 7 rotando las posiciones de R0 , Rh y Rv un cuarto de vuelta, media vuelta o tres cuartos de vuelta, respectivamente.Additional embodiments can be obtained based on the same subject as Figure 7 by rotating the positions of R 0 , R h and R v a quarter turn, half a turn or three quarters of a turn, respectively.
En general, en un contexto más amplio los pesos de color asignados a los elementos de imagen según la presente invención se pueden seleccionar de manera que los valores de color representados por las claves de color podrían verse como ubicados todos dentro del bloque de imagen (véanse las Figuras 3 y 5 ), ubicados algunos dentro del bloque de imagen y ubicados algunos fuera del bloque (véase la Figura 7), o ubicados todos fuera del bloque. La posición relativa de los valores de color en relación con el bloque define la ecuación (plana) utilizada para obtener los pesos de color para los elementos de imagen. En una realización muy preferida de la presente invención, no todos los valores de color están ubicados en una misma línea (columna/fila) del bloque.In general, in a broader context the color weights assigned to the image elements according to the present invention can be selected so that the color values represented by the color keys could be seen as all located within the image block (see Figures 3 and 5 ), some located inside the image block and some located outside the block (see Figure 7), or all located outside the block. The relative position of the color values in relation to the block defines the (flat) equation used to obtain the color weights for the image elements. In a very preferred embodiment of the present invention, not all color values are located on the same line (column / row) of the block.
La presente invención prevé 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 estén ubicados en el centro de elementos 610 de imagen, lo que se ilustra esquemáticamente en la Figura 8.The present invention provides that the color weights can be selected to represent positions of the color values in the block 600 so that the color values or dots are not located in the center of image elements 610, which is schematically illustrated in Figure 8.
Las fórmulas para el plano serán entonces: The formulas for the plane will then be:
G(x, y) = 2x(Gh - G0) - 2y(Gr - G 0)+G0-3 G H 3 Gy G (x, y) = 2x (Gh - G 0) - 2y (Gr - G 0) + G0-3 GH 3 Gy
B(x, y) = 2x (Bh - B 0)~ 2y(Bv - B 0)+B0 - 3BH + 3 Bv B (x, y) = 2x (Bh - B 0) ~ 2y (Bv - B 0) + B0 - 3 BH + 3 Bv
y los pesos de color están representados por las ecuaciones:and the color weights are represented by the equations:
wly = \ - 2 x 2 ywly = \ - 2 x 2 and
wx¿ = -3 2x wx¿ = -3 2x
w ? = 3 - 2 j w? = 3 - 2 j
Los pesos de color asignados a bloques de imagen comprimidos según esta realización de la presente invención se distribuyen entre los elementos de imagen conforme a la Tabla 7 a continuación.The color weights assigned to compressed image blocks according to this embodiment of the present invention are distributed among the image elements according to Table 7 below.
Tabla 7 - pesos de colorTable 7 - color weights
Por lo tanto, la presente invención implica asignar pesos de color a algunos o a todos los elementos de imagen del bloque y, después, determinar claves de color basándose 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 número de múltiples claves de color y distintas asignaciones de pesos de color. En una implementación 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 interpolación plana de valores de color. Si, en cambio, se emplean cuatro o cinco claves para un bloque de imagen, se pueden utilizar la interpolación bilineal y la gaussiana, respectivamente. En la implementación 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 aproximación de un color que varía muy lentamente - más lentamente que si se considerasen todos los valores de color como lugares dentro del bloque (compárense las Figuras 5 y 7).Therefore, the present invention involves assigning color weights to some or all of the image elements of the block and then determining color keys based on the weights, where the color representations of the image elements can be derived from weighted combinations of color values represented by the keys, using the weights assigned to the image elements. Of course, this concept can be extended to a different number of multiple color keys and different color weight assignments. In a preferred implementation, at least one weight of at least one image element is different from 0, 1 and -1. Therefore, the use of three color keys means that color weights can be assigned so that a flat interpolation of color values is possible. If, instead, four or five keys are used for an image block, bilinear and Gaussian interpolation can be used, respectively. In the preferred implementation, color weights are set to reflect that at least one of the color values represented by color keys can be considered located outside the image block. This allows a good approximation of a color that varies very slowly - more slowly than if all color values were considered as places within the block (compare Figures 5 and 7).
La Figura 9 es un diagrama de flujo que ilustra con más detalle una realización del paso de determinación de la Figura 1. El método continúa 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 190bin (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, básicamente ejecutando tres procesos paralelos o subsiguientes. Por tanto, la discusión que sigue se limita a solamente un componente de color.Figure 9 is a flow chart illustrating in more detail an embodiment of the determination step of Figure 1. The method continues from step S2 of Figure 1. In step S10, candidate color keys are selected that are representations of candidate color values. These candidate keys can be Randomly select, they may be the smallest or largest possible candidate color keys, for example a 190 bin sequence (the smallest possible key, which represents the color value (0, 0, 0)), or a sequence of 19 1 bin (the largest possible key, which represents the color value (255, 255, 255)). The three color components R, G, B can be determined separately, that is, basically by executing three parallel or subsequent processes. Therefore, the discussion that follows is limited to only one color component.
En un siguiente paso S11, utilizando los pesos de color asignados se calculan los componentes de representación del color rojo para los elementos de imagen del bloque obtenido con esta selección de componentes de claves de color candidatas. Esto equivale a reemplazar R0, RH y RV (Ro , R1, R2, R3 y R4) en los bloques de imagen discutidos más 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 representación de color candidatos se calcula después en el paso S11.In a next step S11, using the assigned color weights, the red color representation components for the image elements of the block obtained with this selection of candidate color key components are calculated. This is equivalent to replacing R 0 , R H and R V (R o , R 1 , R 2 , R 3 and R 4 ) in the image blocks discussed above with the red components of the candidate color value. The error of representing the red component of the image elements with these candidate color representation components is then calculated in step S11.
En la fórmula de error precedente, Rq, R CH , R cv 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 posición (x, y) dentro del bloque. En la fórmula anterior, los pesos de color y el color original son específicos para el elemento de imagen, mientras que los valores de color candidatos son los mismos, dentro de una selección dada de componentes de clave candidatos, para todos los elementos de imagen del bloque. Después, 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.In the preceding error formula, R q , R CH, R cv represent the red component of three candidate color values represented by the three selected candidate color key components and Rxy is the original red color of the image element in the position (x, y) inside the block. In the above formula, the color weights and the original color are specific to the image element, while the candidate color values are the same, within a given selection of candidate key components, for all image elements of the image. block. Then, in step S12 the calculated error value is stored in an error memory, together with a note about the selected candidate color keys.
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 cálculo de este nuevo valor de error más pequeño reemplazan igualmente a los componentes de clave candidatos previamente almacenados. Steps S10 through S12 are repeated for different selections of candidate color key components and, if the estimated error value is less than the error value stored in the error memory, the new error value replaces the stored value and Candidate key components used to calculate this new smaller error value also replace previously stored candidate key components.
Se realiza este procedimiento para todos los posibles 18 bits de los componentes de rojo candidatos, lo que origina 218 pasos. Además, 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 más pequeños, y se utilizan como claves de color según la presente invención. El método continúa entonces al paso S4 de la Figura 1.This procedure is performed for all possible 18 bits of the candidate red components, resulting in 218 steps. In addition, the procedure is performed for the green and blue components, which implies a total of 218 + 219 + 218 operations. In step S13, the respective red / green / blue key components that originate the smallest error values are selected, and used as color keys according to the present invention. The method then continues to step S4 of Figure 1.
En otra realización, se adopta una aproximación de mínimos cuadrados en lugar de una búsqueda exhaustiva. Esto se puede representar en forma de matriz según lo siguiente:In another embodiment, a least squares approach is adopted instead of a thorough search. This can be represented in matrix form according to the following:
Esto se puede escribir también 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 según la siguiente ecuación:This can also be written in the form y = Ax, where y is a vector comprising the original 16 red components of the image elements of the block, A is a matrix comprising the 3x16 = 48 color weights assigned to the elements Image and x is a vector that comprises the red components to be determined and quantified in red components of the color keys. Therefore, the vector x must be determined. This can be done according to the following equation:
Se lleva a cabo también el mismo procedimiento para los componentes del color verde y el azul.The same procedure is also carried out for green and blue components.
La presente invención prevé que se pueden utilizar otras técnicas, además de la búsqueda exhaustiva y los mínimos cuadrados, para determinar las al menos dos claves por bloque de imagen según la presente invención. The present invention provides that other techniques, in addition to thorough search and least squares, can be used to determine the at least two keys per image block according to the present invention.
Como se ha discutido en lo que antecede, la presente invención se utiliza ventajosamente como un complemento o modo auxiliar al esquema de compresión iPACKMAN/ETC. En tal caso, la presente invención se utilizará para comprimir y descomprimir bloques de imagen que tengan transiciones de color de variación 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.As discussed above, the present invention is advantageously used as an adjunct or auxiliary mode to the iPACKMAN / ETC compression scheme. In such a case, the present invention will be used to compress and decompress image blocks having color variations of slow variation and, in particular, when there is a color gradient that extends along several neighboring blocks. For other image blocks, iPACKMAN / ETC or other auxiliary mode can be used instead.
La Figura 10 ilustra esquemáticamente una implementación de este tipo. El método continúa desde el paso S1 de la Figura 1. Después se procesa el bloque de imagen a comprimir proporcionado, conforme a diferentes esquemas, típicamente en paralelo. En otras palabras, en el paso S20 se comprime el bloque de imagen según un primer modo de compresión para generar una primera representación 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. Además, se comprime adicionalmente el mismo bloque de imagen según al menos otro modo de compresión, en la Figura otros tres modos. Por tanto, en S21, S22 y S23 se utilizan un segundo, tercer y cuarto modos de compresión 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 representación de bloque comprimidas. Ahora están disponibles cuatro (o, en realizaciones alternativas, dos, tres o más de cuatro) representaciones comprimidas distintas. En el siguiente paso S28 se selecciona una de estas cuatro representaciones comprimidas y se utiliza como versión comprimida del bloque actual. Este paso de selección se realiza basándose en los valores de error calculados en los pasos S24-S27. Así, en el paso S28 se seleccionará la representación comprimida asociada con el menor valor de error. En un siguiente paso S29, se proporciona un representante de índice de modo del modo de compresión utilizado para generar la representación 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. Después, el método termina.Figure 10 schematically illustrates such an implementation. The method continues from step S1 of Figure 1. The image block to be compressed is then processed according to different schemes, typically in parallel. In other words, in step S20 the image block is compressed according to a first compression mode to generate a first compressed block representation. In a next step S24 a representative error value is calculated to represent the image block with this first compressed block. In addition, the same image block is further compressed according to at least one other compression mode, in the Figure three other modes. Therefore, in S21, S22 and S23 a second, third and fourth compression modes are used to compress the block in order to generate respectively a second, third and fourth compressed block representations. In steps S25, S26 and S27, representative error values are estimated to represent the block with the second, third or fourth compressed block representation. Four (or, in alternative embodiments, two, three or more than four) different compressed representations are now available. In the next step S28, one of these four compressed representations is selected and used as a compressed version of the current block. This selection step is performed based on the error values calculated in steps S24-S27. Thus, in step S28 the compressed representation associated with the lowest error value will be selected. In a next step S29, a mode index representative of the compression mode used to generate the selected compressed representation is provided, and is included in the compressed image block, that is, in the bit sequence representing the image block . Preferably, this procedure is performed for each image block to be compressed. Then the method ends.
Esto significa que cada bloque de imagen de una imagen se analiza y se comprime preferiblemente de forma individual, lo que en la mayoría de las aplicaciones típicas (dependiendo de la imagen real a codificar), da como resultado un mosaico de bloques de imagen comprimidos según los diferentes modos. Es decir, se comprime según el primer modo un primer conjunto de bloques de imagen, se comprime según el segundo modo un segundo conjunto de bloques, se comprime según el tercer modo un tercer conjunto de bloques y se comprime según el cuarto modo un cuarto conjunto de bloques. Para otras aplicaciones solo se utilizarán, para los distintos bloques de imagen, uno, dos o tres de los modos.This means that each image block of an image is preferably analyzed and compressed individually, which in most typical applications (depending on the actual image to be encoded), results in a mosaic of compressed image blocks according to The different modes. That is, a first set of image blocks is compressed according to the first mode, a second set of blocks is compressed according to the second mode, a third set of blocks is compressed according to the third mode and a fourth set is compressed according to the fourth mode of blocks For other applications, only one, two or three of the modes will be used for the different image blocks.
En esta realización, se genera un bloque candidato comprimido por cada modo de compresión disponible. Sin embargo, en otra realización la selección del modo de compresión a utilizar para un bloque dado se realiza antes de las compresiones reales del bloque. En ese caso, se realiza un primer paso de análisis en donde se investigan y se analizan los colores originales de los elementos de imagen del bloque y, en particular, su distribución en el espacio de color. La selección del modo de compresión se realiza basándose en este análisis.In this embodiment, a compressed candidate block is generated for each available compression mode. However, in another embodiment the selection of the compression mode to be used for a given block is made before actual block compressions. In that case, a first analysis step is carried out where the original colors of the image elements of the block and, in particular, their distribution in the color space are investigated and analyzed. The compression mode selection is made based on this analysis.
Esta realización es posible porque, como se discutirá con mayor detalle más adelante, los diferentes modos de compresión disponibles son particularmente adecuados y eficaces para determinados tipos de bloque. Por ejemplo, el esquema de la presente invención es eficaz en la gestión de bloques con transiciones de color de variación lenta. 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 podría ser THUMB [8], que también se puede utilizar como modo auxiliar a iPACKMAN/ETC. Este esquema tiene dos modos o, así denominados, patrones, que están adaptados para gestionar bloques de imagen que tengan dos crominancias (colores) distintas.This embodiment is possible because, as will be discussed in more detail below, the different compression modes available are particularly suitable and effective for certain types of block. For example, the scheme of the present invention is effective in managing blocks with slow-changing color transitions. The iPACKMAN / ETC scheme is very effective for managing image blocks where the colors of the image elements have quite similar chrominance but different luminance. A third possible scheme could be THUMB [8], which can also be used as an auxiliary mode for iPACKMAN / ETC. This scheme has two modes, or so-called patterns, that are adapted to manage image blocks that have two different chrominance (colors).
Esta realización tiene la ventaja de que solo se necesita generar uno y no cuatro bloques candidatos comprimidos, aunque al coste de un análisis de bloque y de color y del riesgo de seleccionar un esquema de compresión no óptimo.This embodiment has the advantage that only one and not four compressed candidate blocks need be generated, although at the cost of a block and color analysis and the risk of selecting a non-optimal compression scheme.
En la Figura 10, el primer paso S20 de compresión puede representar los pasos S2 a S4 de la Figura 1, es decir, la asignación de pesos de color, la determinación de claves de color y la representación de los colores originales de los elementos de imagen.In Figure 10, the first compression step S20 may represent steps S2 to S4 of Figure 1, that is, the assignment of color weights, the determination of color keys and the representation of the original colors of the elements of image.
La Figura 11 es un diagrama de flujo que ilustra distintas realizaciones de los otros pasos S21, S22 y S23 de compresión de la Figura 10 según los esquemas iPACKMAN/ETC y THUMB.Figure 11 is a flow chart illustrating different embodiments of the other compression steps S21, S22 and S23 of Figure 10 according to the iPACKMAN / ETC and THUMB schemes.
Comenzando con THUMB, el procedimiento continúa 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 representación de un primer valor de color y la segunda clave de color es, análogamente, una representación de un segundo valor de color. El primer y segundo valores de color están ubicados en una primera línea en el espacio de color, preferiblemente el espacio RGB. Esta primera línea tiene también una primera dirección. En un siguiente paso S31, se proporciona una clave de modificador de color. Esta clave de modificador es una representación de al menos un modificador de color aplicable para modificar el primer valor de color a lo largo de una segunda línea que tiene una segunda dirección 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 línea múltiples representaciones de color. En esta realización, la segunda dirección es diferente de la primera dirección, es decir, la primera línea y la segunda línea no son paralelas.Starting with THUMB, the procedure continues from step S1 of Figure 1. In a next step S30, a first and second color keys are determined. The first color key is a representation of a first color value and the second color key is similarly a representation of a second color value. The first and second color values are located on a first line in the color space, preferably the RGB space. This first line also has a first address. In a next step S31, a color modifier key is provided. This modifier key is a representation of at least one applicable color modifier to modify the first color value along a second line that has a second address in the color space. By modifying the first color value with the at least one modifier of color, multiple color representations are obtained along the second line. In this embodiment, the second address is different from the first address, that is, the first line and the second line are not parallel.
En el paso S32 se selecciona un índice de color, asociado a una representación de color, de entre i) las múltiples representaciones de color a lo largo de la segunda línea e ii) al menos una representación de color basada en el segundo valor de color. Este paso de selección de índice se realiza preferiblemente para cada elemento de imagen del bloque, lo que se ilustra esquemáticamente por la línea L4.In step S32 a color index, associated with a color representation, is selected from among i) the multiple color representations along the second line and ii) at least one color representation based on the second color value . This index selection step is preferably performed for each image element of the block, which is schematically illustrated by the line L4.
La resultante representación de bloque comprimida de este modo comprenderá, por tanto, la primera y la segunda claves de color, la clave de modificador de color y una secuencia de índices de color.The resulting block representation thus compressed will therefore comprise the first and second color keys, the color modifier key and a sequence of color indices.
En realidad, el esquema THUMB antes descrito puede ejecutarse, a su vez, conforma a dos modos o patrones, dependiendo de cómo estén 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 más 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 están ubicados en dos grupos 2, 4, conteniendo cada uno múltiples colores. Tal distribución de color se gestiona ventajosamente con el patrón/modo H de THUMB, que se ilustra en la Figura 12B.In reality, the THUMB scheme described above can be executed, in turn, conforms to two modes or patterns, depending on how the colors of the image elements are distributed in the color space. This means that THUMB occupies two of the four different modes of Figure 10. Figures 12-14B describe in more detail the use of THUMB. In Figure 12A the (16) original colors of image elements of a block to be compressed are shown in the color space. The Figure shows that the colors are located in two groups 2, 4, each containing multiple colors. Such color distribution is advantageously managed with the THUMB pattern / mode H, which is illustrated in Figure 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 están ubicados en una primera línea 40 que tiene una primera dirección 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 línea 12 que tiene una segunda dirección 15, segunda dirección 15 que es diferente de la primera dirección 45. En este patrón/modo H se utiliza análogamente 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 están ubicados a lo largo de una tercera línea 22, que tiene una tercera dirección 25. En el ejemplo ilustrado, la segunda 15 y tercera 25 direcciones son paralelas.In Figure 12B, the first color value 10 represented by the first color key and the second color value 20 represented by the second color key are located on a first line 40 having a first address 45. From the first value 10 In color, two color representations 30, 32 can be derived using a color modifier represented by the color modifier key. These two color representations 30, 32 and the first color value 10 are located on a second line 12 having a second address 15, a second address 15 that is different from the first address 45. In this pattern / mode H it is used analogously a color modifier represented by the color modifier key to modify the second color value 20, in order to obtain two color representations 31, 33. These two color representations 31, 33 and the second color value 20 are located along a third line 22, which has a third address 25. In the illustrated example, the second 15 and third 25 directions are parallel.
Después se asocian los índices de color seleccionados para los elementos de imagen con una de las cuatro representaciones 30, 31, 32, 33 de color.The selected color indices for the image elements are then associated with one of the four color representations 30, 31, 32, 33.
La Figura 13A es un diagrama correspondiente de una distribución original de color gestionada eficazmente mediante un patrón/modo T de THUMB. En la Figura, los colores están 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 elíptica.Figure 13A is a corresponding diagram of an original color distribution effectively managed by a THUMB pattern / T mode. In the Figure, the colors are located in two groups 2, 4, similar to Figure 12A. However, unlike in Figure 12A, one of the groups 4 has a general circular shape instead of elliptical.
La Figura 13B ilustra cómo maneja THUMB una situación de este tipo. El primer valor 10 y el segundo valor 20 de color están ubicados en la primera línea 40 que tiene la primera dirección 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 línea 12 que tiene la segunda dirección 15. En este patrón/modo, las representaciones de color disponibles para los elementos de imagen son la primera representación 30 de color y la segunda representación 32 de color, el primer valor de color 10 y el segundo valor 20 de color. Cada índice de color seleccionado para los elementos de imagen está 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 representación de un primer valor de color. En este paso S30, también se determina una segunda clave de color. Sin embargo, esta segunda clave es una representación 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 (2 x 4 o 4 x 2 elementos de imagen) se les asigna el primer valor de color, mientras que a los elementos de imagen de un segundo sub-bloque ( 2 x 4 o 4 x 2 elementos de imagen) se les asigna el segundo valor de color.Figure 13B illustrates how THUMB handles such a situation. The first value 10 and the second color value 20 are located on the first line 40 which has the first address 45. The first color value 10 is modified by a color modifier to generate a first 30 and a second 32 color representations. located on the second line 12 having the second address 15. In this pattern / mode, the color representations available for the image elements are the first color representation 30 and the second color representation 32, the first color value 10 and the second color value 20. Each color index selected for the image elements is associated with one of these four possible representations. If, on the contrary, in step S22 of Figure 10 the iPACKMAN / ETC scheme is used, in step S30 a first color key is determined as a representation of a first color value. In this step S30, a second color key is also determined. However, this second key is a representation of a differential color. Then a second color value can be obtained as a sum of the first color value and the differential color. The first color value is assigned to the image elements of a first sub-block (2 x 4 or 4 x 2 image elements), while the image elements of a second sub-block (2 x 4 or 4 x 2 image elements) are assigned the second color value.
En el paso S31 se proporciona una clave de intensidad, en donde la clave de intensidad es una representación de un conjunto de múltiples 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 múltiples representaciones de color. En una implementación preferida, la clave de intensidad es un índice tabular a una tabla de intensidades que comprende múltiples conjuntos de modificadores, en donde los conjuntos de modificadores tienen distintos modificadores de intensidad. En el paso S32, se selecciona un índice de intensidad para cada elemento de imagen del bloque, en donde el índice de intensidad está asociado con un modificador de intensidad procedente del conjunto de modificadores de intensidad representado por la clave de intensidad.In step S31 an intensity key is provided, wherein the intensity key is a representation of a set of multiple intensity modifiers. These intensity modifiers can be applied to modify the intensity of the first or second color values, in order to generate multiple color representations. In a preferred implementation, the intensity key is a tabular index to an intensity table comprising multiple sets of modifiers, where the sets of modifiers have different intensity modifiers. In step S32, an intensity index is selected for each image element of the block, where the intensity index is associated with an intensity modifier from the set of intensity modifiers represented by the intensity key.
La Figura 14 ilustra esquemáticamente una posible representación 700 de bloque comprimida para el modo diferencial ÍPACKMAN/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. Análogamente, 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, además, dos claves 750A, 750B de intensidad, una para cada sub-bloque 2x4/4x2, cada una preferiblemente de 3 bits. También se incluye en el bloque comprimido 700 una secuencia 760 de índices de intensidad, preferiblemente un índice de intensidad de 2 bits por cada elemento de imagen del bloque, lo que da como resultado 32 bits. Un “flipbit” (bit de inversión) 770 define si los dos sub-bloques del bloque de imagen son dos bloques 2x4 o dos bloques 4x2, es decir, si están 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). Téngase en cuenta que el orden respectivo de las claves 710, 720, 750A, 750B, la secuencia 760 de índices, el flipbit 770 y el diffbit 780 del bloque de imagen codificado 700 puede ser distinto del ilustrado en la Figura. El tamaño total del bloque comprimido son 64 bits.Figure 14 schematically illustrates a possible compressed block representation 700 for the ÍPACKMAN / eTc differential mode. The compressed block 700 includes the first color key 710 which includes three color components, red 712, green 714 and blue 716, preferably each represented by five bits. Similarly, the second color or differential color key 720 includes three components, red 722, green 724 and blue 726, preferably each represented by three bits. The compressed block 700 also includes two 750A, 750B intensity keys, one for each 2x4 / 4x2 sub-block, each preferably 3 bits. Also included in the compressed block 700 is a sequence 760 of intensity indices, preferably an intensity index of 2 bits for each image element of the block, which results in 32 bits. A "flipbit" (inversion bit) 770 defines whether the two sub-blocks of the image block are two 2x4 blocks or two 4x2 blocks, that is, if they are placed vertically (flipbit = 0 bin ) or horizontally (flipbit = 1 bin ). iPACKMAN / ETC comprises two modes of the type called "default", one of which has been described and set forth herein. A “diffbit” (difference bit) 780 discriminates between these two default modes. In Figures 14 to 17, this diffbit 780 is equal to, and has been set to, 1 bin (or 0 bin ). Note that the respective order of the keys 710, 720, 750A, 750B, the sequence 760 of indices, the flipbit 770 and the diffbit 780 of the encoded image block 700 may be different from that illustrated in the Figure. The total size of the compressed block is 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 básicamente 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:In the aforementioned iPACKMAN / ETC mode, the color components 712, 714, 716 of the first color key 710 each preferably comprise 5 bits, which basically represent any value in the range of 0 to 31 (from 00000 bin to 11111 bin ) The components 722, 724, 726 of the second key 720 each preferably comprise 3 bits, which are used to represent a value in the range of -4 to 3. The color components of the second color value can be obtained by adding the components 712, 714, 716; 722, 724, 726 of the two keys:
Componente rojo = R dRRed component = R dR
Componente verde = G dGGreen component = G dG
Componente azul = B dBBlue component = B dB
Dado que estos componentes de color representan información de intensidad, se les permite tomar los valores de 0 (ninguna intensidad) a 31 (máxima intensidad). Esto significa que el codificador que trabaje en este modo de iPACKMAN/ETC nunca utilizará 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.Since these color components represent intensity information, they are allowed to take the values from 0 (no intensity) to 31 (maximum intensity). This means that the encoder that works in this mode of iPACKMAN / ETC will never use bit combinations of the first color key 710 and the second color key 720 that cause the sums R dR, G dG, B dB to overflow , that is, be <0 or> 31. This allows you to enter three auxiliary modes that can be used to complement 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.In the first auxiliary mode, the red component overflows, that is, R dR is less than zero or greater than 31. This happens if the first three bits of the red component 712 of the first color key 710 are equal and other than the first bit of the red component 722 of the second color key 720.
En la Figura 15 se emplea este principio para utilizar el patrón/modo H de THUMB como un modo auxiliar para iPACKMAN/ETC. Así, 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 representación 700 de bloque comprimida tiene preferiblemente un total de 64 bits, de los cuales cuatro se han utilizado según lo anterior. Los 60 bits restantes se dividen preferiblemente entre las partes anexas según 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 índices de color preferiblemente 32 bits.This principle is used in Figure 15 to use the THUMB pattern / mode H as an auxiliary mode for iPACKMAN / ETC. Thus, in this mode four 790 bits cannot be freely selected since the red components must overflow, which happens if these four 790 bits are equal to 1110 bin or 0001 bin . The compressed block representation 700 preferably has a total of 64 bits, of which four have been used according to the above. The remaining 60 bits are preferably divided between the annexed parts according to the following; 4 bits are assigned to each color component 712, 714, 716; 722, 724, 726 of the first 710 and second 720 color keys. The color modifier key 750 comprises three bits, the diffbit 780 one bit (having the same value as in Figure 14) and the sequence 760 of color indices preferably 32 bits.
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. Además, 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.A second auxiliary mode can be obtained if the green component is overflowed, that is, G dG is less than zero or greater than 31, and the red component is not allowed to overflow, i.e. 0 <R dR <31 . In this mode, the first bit of the red component 712 of the first color key of Figure 14 is set other than the second or third bit of the red 712 component. In addition, the first three bits of the green component 714 of the first color key 710 must be the same and distinct from the first bit of the green component 724 of the second color key 720.
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 división de bits entre las claves 710, 720 de color, la clave 750 de modificador de color, el diffbit 780 y la secuencia 760 de índices 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.In Figure 16, bit 0 cannot be set freely (corresponds to the first bit of the red component in the first color key of Figure 14), bit 8 to bit 10 (corresponds to the first three bits of the green component in the first color key of Figure 14) and bit13 (corresponds to the first bit of the green component in the second color key of Figure 14), collectively represented by 790 in Figure. Therefore, 59 bits remain for use in the other parts of the compressed block 700. The division of bits between the color keys 710, 720, the color modifier key 750, the diffbit 780 and the sequence 760 of color indices it is preferably the same as for Figure 15 except that the color modifier key 750 in this case comprises only two bits instead of three.
Está disponible un tercer modo auxiliar que utiliza el esquema de la presente invención 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. Además, el componente de azul se desborda, es decir, B dB es menor que cero o mayor que 31.A third auxiliary mode is available that uses the scheme of the present invention if the blue component is overflowed, that is, B dB is less than zero or greater than 31, but the red and green components are not allowed to overflow. . This means that the first bit of component 712 of red and 714 of green of the first color key 710 of Figure 14 must be different from the second or third component of components 712 of red and 714 of green. In addition, the blue component overflows, that is, B dB is less than zero or greater than 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.In Figure 17, therefore, bit 0 cannot be freely set (corresponds to the first bit of the red component in the first color key of Figure 14), bit8 (corresponds to the first bit of the green component in the first color key of Figure 14), from bit16 to bit18 (correspond to the first three bits of the blue component in the first color key of Figure 14) and bit21 (corresponds to the first bit of the blue component in the second color key of Figure 14), collectively referred to as 790. Components 712, 722, 732 of red and 716, 726, 736 of blue of the three keys 710, 720, 730 of color are preferably assigned 6 bits to each, while the corresponding components 714, 724, 734 of green comprise 7 bits each and the diffbit 780 is one bit. This adds up to 64 bits.
Si son posibles las cuatro representaciones comprimidas distintas ilustradas en las Figuras 14-17, un índice 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. Además, preferiblemente se utiliza el diffbit para discriminar entre el otro modo iPACKMAN/ETC disponible. Téngase en cuenta, sin embargo, que algunos de los bits de este índice de modo se pueden utilizar para codificar el bloque comprimido en los distintos modos.If the four different compressed representations illustrated in Figures 14-17 are possible, a mode index used to discriminate between the four modes preferably includes defined positions in the bit sequences. These bit positions include the first three bits of the red, green and blue component of the first color key, and the first bit of the red, green and blue component of the second color key of Figure 14 In addition, diffbit is preferably used to discriminate between the other available iPACKMAN / ETC mode. Note, however, that some of the bits in this mode index can be used to encode the compressed block in different modes.
DescompresiónDecompression
La Figura 18 ilustra un diagrama de flujo de un método para descodificar una imagen codificada o versión codificada de una imagen original según la presente invención. La imagen codificada comprende básicamente varias representaciones codificadas de bloques de imagen. Estas representaciones de bloques codificadas se generan preferiblemente mediante el método de codificación de imagen descrito más arriba.Figure 18 illustrates a flow chart of a method for decoding an encoded image or encoded version of an original image according to the present invention. The encoded image basically comprises several encoded representations of image blocks. These encoded block representations are preferably generated by the image coding method described above.
El método comienza por lo general identificando el bloque o bloques de imagen codificada que hay que descodificar. Podría ocurrir que hubiera que descodificar todos los bloques de imagen codificados de una imagen codificada, para generar una representación 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 número seleccionado de bloques de imagen (o, más exactamente, una cantidad seleccionada de elementos de imagen de ciertos bloques de imagen). Una vez se han identificado (la representación 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 implementación preferida, este paso de determinación 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 añaden preferiblemente a componentes correspondientes de la primera clave de color antes de la expansión, para generar un segundo valor de color. En una implementación preferida de la presente invención, la representación de bloque comprimida comprende tres claves de color. Esto significa que en el paso S40 se determinan tres valores de color mediante la extensión de cada una de las claves.The method usually begins by identifying the block or blocks of encoded image to be decoded. It could happen that all the encoded image blocks of an encoded image had to be decoded, to generate a decoded representation of the original image. As an alternative, you only have to access a part of the original image. Consequently, only a selected number of image blocks have to be decoded (or, more accurately, a selected amount of image elements of certain image blocks). Once the block or (the representations of) the correct encoded image blocks have been identified (the representation of), step S40 determines at least two color values based on the at least two color keys of the compressed block representations . In a preferred implementation, this determination step involves expanding the quantized color of the color key, for example RGB676, to, preferably, 24 bits (RGB888). If the second color key comprises differential color components, these components are preferably added to corresponding components of the first color key before expansion, to generate a second color value. In a preferred implementation of the present invention, the compressed block representation comprises three color keys. This means that in step S40 three color values are determined by extending each of the keys.
Los siguientes pasos S41 y S42 se realizan para cada elemento de imagen que ha de descodificarse, lo que se ilustra esquemáticamente por la línea 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 posición real del elemento de imagen en los bloques:The following steps S41 and S42 are performed for each image element to be decoded, which is schematically illustrated by line L5. In step S41 the color weights assigned to the image element to be decoded are provided. The color weights are preferably predefined weights, which depend on the actual position of the image element in the blocks:
K = f 0(x >y) K = f 0 ( x> y)
wxh = f H (x ,y ) wxh = f H ( x, y)
K y = f v ( x>y)K y = f v (x> y)
Por lo tanto, todos los bloques de imagen de la imagen comprimida según la presente invención tienen preferiblemente la misma asignación de pesos de color, de manera que un elemento de imagen en, por ejemplo, la posición (2,1) de un primer bloque tendrá los mismos pesos de color que un elemento de imagen en la posición (2,1) de un segundo bloque.Therefore, all image blocks of the compressed image according to the present invention preferably have the same color weight allocation, such that an image element in, for example, the position (2,1) of a first block it will have the same color weights as an image element at the position (2,1) of a second block.
Sin embargo, la presente invención prevé que podrían existir alternativas en la asignación de pesos que se lleva a cabo bloque por bloque. En tal caso, la representación comprimida comprende preferiblemente una clave de peso. Esto significa que la determinación de pesos en el paso S41 se realiza entonces basándose 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.However, the present invention provides that alternatives could exist in the allocation of weights that are carried out block by block. In such a case, the compressed representation preferably comprises a weight key. This means that the determination of weights in step S41 is then performed based on the weight key, that is, the set of color weights used for the current block is identified based on the weight key.
En un siguiente paso S42, la representación de color utilizada para representar el color original del elemento de imagen a descodificar se calcula basándose en los pesos de color proporcionados y los al menos dos valores de color determinados. En una implementación preferida, la representación de color se calcula como combinación (lineal) ponderada, mediante los pesos proporcionados, de los valores de color determinados. En este contexto, en el cálculo se utilizan preferiblemente todos los valores de color, pero podría ser posible utilizar solamente un subconjunto de los mismos. In a next step S42, the color representation used to represent the original color of the image element to be decoded is calculated based on the color weights provided and the at least two determined color values. In a preferred implementation, the color representation is calculated as a weighted (linear) combination, by means of the weights provided, of the determined color values. In this context, all color values are preferably used in the calculation, but it may be possible to use only a subset of them.
Se podrían realizar los pasos S41 y S42 para varios elementos de imagen del bloque de imagen (lo que se ilustra esquemáticamente mediante la línea L5). La invención prevé que, en algunas aplicaciones, solamente se descodifique un único elemento de imagen a partir de un bloque de imagen específico, se descodifiquen múltiples elementos de imagen de un bloque de imagen específico y/o se descodifiquen todos los elementos de imagen de un bloque específico.Steps S41 and S42 could be performed for various image elements of the image block (which is schematically illustrated by line L5). The invention provides that, in some applications, only a single image element is decoded from a specific image block, multiple image elements of a specific image block are decoded and / or all image elements of a single image are decoded. specific block
Después 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 esquemáticamente mediante la línea L6). Esto significa que el bucle de pasos S40 a S42 podría realizarse una vez, pero más frecuentemente varias veces para diferentes bloques de imagen codificados y/o varias veces para un bloque de imagen codificado específico.Then, steps S40 to S42 are preferably repeated for all image blocks comprising image elements to be decoded (which is schematically illustrated by line L6). This means that the loop of steps S40 to S42 could be performed once, but more frequently several times for different encoded image blocks and / or several times for a specific encoded image block.
En el paso opcional S43 se genera una representación descodificada de la imagen original, o una parte de la misma, basándose en los elementos y bloques de imagen descodificados. Después, el método termina.In the optional step S43 a decoded representation of the original image, or a part thereof, is generated, based on the decoded elements and blocks of the image. Then the method ends.
La Figura 19 es un diagrama de flujo de una implementación multimodal de la descodificación/descompresión de imágenes y bloques de la presente invención. El método comienza en el paso S50 donde, basándose en un índice de modo, se selecciona un modo de descompresión para uso en el bloque actual. Si son posibles las cuatro representaciones comprimidas distintas ilustradas en las Figuras 14 a 17, el índice 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. Así, el descodificador investiga estas posiciones de bit en la secuencia de bits que constituye la representación de bloque comprimida y selecciona el modo de descompresión basándose en los bits investigados. En una implementación preferida, se selecciona un primer modo de compresión 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.Figure 19 is a flow chart of a multimodal implementation of decoding / decompressing images and blocks of the present invention. The method begins in step S50 where, based on a mode index, a decompression mode is selected for use in the current block. If the four different compressed representations illustrated in Figures 14 to 17 are possible, the mode index includes the diffbit, the first three bits of the red, green and blue component of the first color key and the first bit of the component red, green and blue of the second color key of Figure 14. Thus, the decoder investigates these bit positions in the bit sequence that constitutes the compressed block representation and selects the decompression mode based on the bits investigated In a preferred implementation, a first compression mode is selected if the component of the blue color overflows, but not that of the red and the green. A second and third mode are selected if the red component overflows or the green component overflows, but not the red component. If none of the components overflows, in step S50 the fourth mode is selected.
Si en el paso S50 se selecciona el primer modo, el procedimiento continúa al paso S51, donde se descomprime el bloque según 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 continúa al paso S52, S53 o S54.If in step S50 the first mode is selected, the procedure continues to step S51, where the block is decompressed according to this mode. This corresponds to performing steps S40-S42 illustrated in Figure 18. If, instead, a second, third or fourth mode is selected, the procedure continues to step S52, S53 or S54.
La Figura 20 ilustra la descompresión realizada según el modo THUMB. Comenzando en el paso S60, se determina un primer valor de color basándose en la primera clave de color. En el paso S61 se determina un segundo valor de color basándose en la segunda clave de color. Estos dos valores de color están ubicados en una primera línea que tiene una primera dirección en el espacio de color (véanse 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 múltiples representaciones de color a lo largo de una segunda línea que tiene una segunda dirección 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 dirección es distinta de la primera dirección. El siguiente paso S63 se lleva a cabo para cada elemento de imagen a descodificar, lo que se ilustra esquemáticamente mediante la línea L7. Este paso S63 implica seleccionar, basándose en la secuencia de índices de color y, más exactamente, en el índice de color asignado al elemento de imagen correspondiente, una representación de color de entre i) las múltiples representaciones de color a lo largo de la segunda línea e ii) al menos una representación de color basada en el segundo valor de color. En el patrón/modo H, también 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 línea que tiene una tercera dirección (distinta de la primera dirección) con el fin de generar múltiples representaciones de color. Por lo tanto, en este patrón H están disponibles dos conjuntos de múltiples representaciones de color (uno de ellos situado en la segunda línea y el otro situado en la tercera línea) y el índice de color de los elementos de imagen apunta a una de las representaciones de los dos conjuntos. En el patrón/modo T, las múltiples representaciones de color de la segunda línea se complementan con el primer y el segundo valor de color, que también se pueden seleccionar como representaciones de color para los elementos de imagen. El método continúa entonces al paso S43 de la Figura 18.Figure 20 illustrates the decompression performed according to the THUMB mode. Starting at step S60, a first color value is determined based on the first color key. In step S61 a second color value is determined based on the second color key. These two color values are located on a first line that has a first direction in the color space (see Figures 12B and 13B). The color determinations of steps S60 and S61 preferably involve expanding the bit sequence of the keys to generate the color values. A next step s62 generates multiple color representations along a second line that has a second address in the color space, modifying the first color value with at least one color modifier represented by the color modifier key. This second address is different from the first address. The next step S63 is carried out for each image element to be decoded, which is schematically illustrated by the line L7. This step S63 involves selecting, based on the sequence of color indices and, more precisely, on the color index assigned to the corresponding image element, a color representation of between i) the multiple color representations throughout the second line and ii) at least one color representation based on the second color value. In pattern / mode H, at least one color modifier based on the modifier key is also used, to modify the second color value along a third line that has a third address (other than the first address) with in order to generate multiple color representations. Therefore, in this pattern H two sets of multiple color representations are available (one of them located on the second line and the other located on the third line) and the color index of the image elements points to one of the representations of the two sets. In the T pattern / mode, the multiple color representations of the second line are complemented by the first and second color values, which can also be selected as color representations for the image elements. The method then continues to step S43 of Figure 18.
Si, en cambio, basándose en el índice de modo se selecciona el modo iPACKMAN/ETC, se determina un valor de color basándose en la primera clave de color o la primera y la segunda claves de color del paso S70 de la Figura.If, on the basis of the mode index, the iPACKMAN / ETC mode is selected, a color value is determined based on the first color key or the first and second color keys of step S70 of the Figure.
21. Si el elemento de imagen a descodificar está presente en un primer sub-bloque (2x4/4x2), el valor de color se determina basándose en la primera clave de color, preferiblemente mediante la expansión de la secuencia de bits de la clave de RGB555 a RGB888. Si, en cambio, el elemento de imagen está presente en un segundo sub-bloque (2x4/4x2), el valor de color se determina basándose tanto en la primera como en la segunda claves de color, básicamente 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 expansión del resultado a RGB888 (o bien, como alternativa, primeramente la expansión de los componentes de claves y después 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 múltiples modificadores de intensidad. Este paso comprende preferiblemente proporcionar, basándose en la clave de intensidad, el conjunto de modificadores a partir de una tabla que comprende múltiples 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, basándose en el índice 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 representación 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 método continúa después al paso S43 de la Figura 18.21. If the image element to be decoded is present in a first sub-block (2x4 / 4x2), the color value is determined based on the first color key, preferably by expanding the bit sequence of the data key. RGB555 to RGB888. If, instead, the image element is present in a second sub-block (2x4 / 4x2), the color value is determined based on both the first and second color keys, basically by adding the components of red, the green components and the blue components of the first and second keys and the subsequent expansion of the result to RGB888 (or, alternatively, first the expansion of the key components and then the sum of them). In this mode, the compressed block comprises two intensity keys, one for each sub-block. The intensity key assigned to the sub-block comprising the image element to be decoded is used in step S71 to provide a set of multiple intensity modifiers. This step preferably comprises providing, based on the intensity key, the set of modifiers from a table comprising multiple sets of modifiers of this type. In step S72 an intensity modifier is selected for use in the element of image, based on the set of modifiers provided, based on the intensity index assigned to the image element. In the next step S73, the selected modifier modifies in intensity the determined color value, in order to generate a color representation for the image element. Preferably, steps S70 through S73 are repeated for all the image elements of the block to be decoded. The method then continues to step S43 of Figure 18.
Ejemplos de descompresiónDecompression Examples
A continuación se ofrecen ejemplos de descompresión utilizando un diseño de secuencia de bits como se ilustra en las Figuras 14 a 17.Below are examples of decompression using a bit sequence design as illustrated in Figures 14 to 17.
iPACKMAN/ETCiPACKMAN / ETC
El bloque de imagen comprimido está representado por la siguiente secuencia de bits:The compressed image block is represented by the following sequence of bits:
101100101101011000100000101 11011101100101101011000100000101 11011
1001 11000101 101110001100010100011001 11000101 10111000110001010001
Primeramente se investigan los bit0-bit2, bit6, bit8-10, bit13, bit16-18, bit21 y el diffbit 780 para determinar el modo de descompresión a utilizar para este bloque de imagen. Dado que ninguno de los componentes de color se desborda y el diffbit 780 está 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:First, bit0-bit2, bit6, bit8-10, bit13, bit16-18, bit21 and diffbit 780 are investigated to determine the decompression mode to be used for this image block. Since none of the color components overflow and the diffbit 780 is set to 1, the differential default mode of iPACKMAN / ETC must be selected. First, the 712, 714, 716 color components of the first color key 710 are expanded to RGB888, to generate the first color value:
Rojo: 10110 b¡ n => 10110101 bin = 181Red: 10110 b¡ n => 10110101 bin = 181
Verde: 11010bm => 11010110bm = 214Green: 11010bm => 11010110bm = 214
Azul: 00100bin => 00100001bin = 33Blue: 00100bin => 00100001bin = 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:To these components are added the differential components 722, 724, 726 of the second color key 720 to obtain the second color value:
Rojo: 010bin <-► 2 => 181 2=183Red: 010bin <-► 2 => 181 2 = 183
Verde: 110bm^ 2 =>214-2=212Green: 110bm ^ 2 => 214-2 = 212
Azul: 000b¡n ** 0 33+2—33Blue: 000b¡n ** 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.The flipbit is set to 1 bin, which implies that the first color value is assigned to the eight image elements of the top two rows of the 4x4 block, while the second color value is used for the eight image elements of The bottom two rows.
Las dos claves 750A, 750B de intensidad apuntan a una tabla de intensidades, ejemplificada por la Tabla 8 a continuación:The two intensity keys 750A, 750B point to an intensity table, exemplified by Table 8 below:
Tabla 8 - Tabla de intensidadesTable 8 - Intensity Table
La primera clave 750A de intensidad aplicable para elementos de imagen en el primer sub-bloque 2x4 es 101bin, 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. The first intensity 750A key applicable for image elements in the first 2x4 sub-block is 101 bin , which represents the intensity modifiers -57, -19, 19, 57. Instead, the second intensity 750B key represents the modifiers of intensity -80, -28, 28, 80.
El primer elemento de la imagen en la posición (0,0) tendrá la siguiente representación de color:The first element of the image at position (0,0) will have the following color representation:
(181,214, 33) (-19, -19, -19) = (162, 195, 14)(181,214, 33) (-19, -19, -19) = (162, 195, 14)
En consecuencia, la representación de color del último elemento de imagen (en la posición (3,3)) se calcula de la manera siguiente:Accordingly, the color representation of the last image element (at position (3,3)) is calculated as follows:
(183, 212, 33) (80, 80, 80) = (255, 255, 113)(183, 212, 33) (80, 80, 80) = (255, 255, 113)
después de restringir los valores calculados de componentes de color entre el valor mínimo permitido de 0 y el valor máximo de 255.after restricting the calculated values of color components between the minimum allowed value of 0 and the maximum value of 255.
Después se prosigue este procedimiento para el resto de los elementos de imagen de los bloques de imagen.This procedure is then continued for the rest of the image elements of the image blocks.
Patrón H de THUMBTHUMB H pattern
El bloque de imagen comprimido se representa por la siguiente secuencia de bits:The compressed image block is represented by the following sequence of bits:
111 100101101 0110001000001011 101 1111 100101101 0110001000001011 101 1
1001 11000101 101110001100010100011001 11000101 10111000110001010001
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 patrón H de THUMB. La secuencia de bits presentada más arriba tiene la disposición que se ilustra en la Figura 15.In this case, bits bit0-bit2 are all the same and different from bit5, which means that the red component overflows and a first auxiliary mode must be used, that is the THUMB pattern H. The bit sequence presented above has the arrangement illustrated in Figure 15.
El primer y segundo valores de color se generan mediante la expansión de los componentes 712, 714, 716; 722, 724, 726 de las dos claves 710, 720 de color:The first and second color values are generated by expanding the components 712, 714, 716; 722, 724, 726 of the two 710, 720 color keys:
Rojo 0: 1010|3¡n 10101010|;)¡n=170Red 0: 1010 | 3¡n 10101010 |;) ¡n = 170
VerdeO: 1101 bin => 11011101 b¡n=221GreenO: 1101 bin => 11011101 b¡n = 221
Azul 0: 0110b¡n => 01100110bin=102Blue 0: 0110b¡n => 01100110bin = 102
Rojo 1: 0010b¡n => 00100010bin=34Red 1: 0010b¡n => 00100010bin = 34
Verde 1: 0000bin => 00000000bin=0Green 1: 0000bin => 00000000bin = 0
Azul 1: 1011 bin => 10111011 bin=187Blue 1: 1011 bin => 10111011 bin = 187
Por lo tanto, el primer valor de color es (170, 221, 102) y el segundo valor es (34, 0, 187).Therefore, the first color value is (170, 221, 102) and the second value is (34, 0, 187).
La clave 750 de modificador 101 bin=5 implica que hay que desplazar hacia la izquierda el número 1 bin cinco veces para obtener 100000bin=32. Se utiliza este valor para modificar los dos valores de color con el fin de obtener cuatro representaciones de color:The key 750 of modifier 101 bin = 5 implies that the number 1 bin must be shifted to the left five times to obtain 100,000 bin = 32. This value is used to modify the two color values in order to obtain four color representations:
C0: (170, 221, 102) -(32, 32, 32) = (138, 189, 70)C0: (170, 221, 102) - (32, 32, 32) = (138, 189, 70)
C1: (170, 221, 102) (32, 32, 32) = (202, 253, 134)C1: (170, 221, 102) (32, 32, 32) = (202, 253, 134)
C2: (34, 0, 187) -(32, 32, 32) = (2, 0, 155)C2: (34, 0, 187) - (32, 32, 32) = (2, 0, 155)
C3: (34, 0, 187) (32, 32, 32) = (66, 32, 219)C3: (34, 0, 187) (32, 32, 32) = (66, 32, 219)
El primer elemento de imagen tiene el índice de color 10bin, lo que implica que para este elemento de imagen se utiliza la representación C2 de color. Se prosigue este procedimiento para el resto de elementos de imagen (índice 00bin^C 0, 01bin^C 2, 10bin^C 2 y 11b¡n^ C3).The first image element has the color index 10 bin , which implies that for this image element the color representation C2 is used. This procedure is continued for the rest of the image elements (index 00 bin ^ C 0, 01 bin ^ C 2, 10 bin ^ C 2 and 11 b¡n ^ C3).
Patrón T de THUMBTHUMB T pattern
El bloque de imagen comprimido se representa por la siguiente secuencia de bits:The compressed image block is represented by the following sequence of bits:
1 011001000010110001000001 0111 01 11 011001000010110001000001 0111 01 1
1001 11000101 101110001100010100011001 11000101 10111000110001010001
En este caso, el componente verde desborda, ya que bit8-bit10 son iguales y distintos de bit12. Además, el componente de rojo no desborda, porque bit0 es distinto de bit1. Esto significa que se debe seleccionar un segundo modo de descompresión auxiliar en forma de patrón T de THUMB y que la secuencia de bits se interpreta con la disposición de la Figura 16.In this case, the green component overflows, since bit8-bit10 are the same and different from bit12. In addition, the red component does not overflow, because bit0 is different from bit1. This means that a second auxiliary decompression mode in the form of a THUMB T pattern must be selected and that the bit sequence is interpreted with the arrangement of Figure 16.
Los dos valores de color se calculan del mismo modo que antes para el patrón P: The two color values are calculated in the same way as before for the P pattern:
Rojo 0: 0110bin^> 01100110bin=102Red 0: 0110bin ^> 01100110bin = 102
Verde 0: 0101bin => 01010101 bin=85Green 0: 0101bin => 01010101 bin = 85
Azul 0: 0100bin w 01000100bin=68Blue 0: 0100bin w 01000100bin = 68
Rojo 1: 0100bin => 01000100bin=68Red 1: 0100bin => 01000100bin = 68
Verde 1: 0001bin => 00010001bin=17Green 1: 0001bin => 00010001bin = 17
Azul 1: 0111bin => 01110111bin=119Blue 1: 0111bin => 01110111bin = 119
En este caso el modificador de color 750 incluye solamente dos bits 01 bin=1, lo que implica que hay que desplazar hacia la izquierda una posición el número 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:In this case, the color modifier 750 includes only two bits 01 bin = 1, which implies that one number 1bin must be moved to the left to obtain 10bin = 2. Using this modifier value, two of the four possible color representations are calculated, while the other two representations are equal to the two color values:
C0: (102, 85, 68)C0: (102, 85, 68)
C1: (102, 85, 68) -(2, 2, 2) = (100, 83, 66)C1: (102, 85, 68) - (2, 2, 2) = (100, 83, 66)
C2: (102, 85, 68) (2, 2, 2) = (104, 87, 70)C2: (102, 85, 68) (2, 2, 2) = (104, 87, 70)
C3: (68, 17, 119)C3: (68, 17, 119)
El primer elemento de imagen tiene el índice de color 10bin, que corresponde a C2. Después se repite el procedimiento para el resto de los elementos de imagen del bloque.The first image element has the color index 10bin, which corresponds to C2. Then the procedure is repeated for the rest of the image elements of the block.
PLANOFLAT
El bloque de imagen comprimido se representa por la siguiente secuencia de bits:The compressed image block is represented by the following sequence of bits:
1 011001 00101011 0000001010111001 11 011001 00101011 0000001010111001 1
1001110001011 0111000110001 0100011001110001011 0111000110001 010001
En este ejemplo, el componente azul se desborda ya que bit16-bit18 son iguales y diferentes de bit21. Además, 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 descompresión tal como se define en la presente invención, PLANO.In this example, the blue component overflows since bit16-bit18 are the same and different from bit21. In addition, bit0 is different from bit1 (red does not overflow) and bit8 is different from bit9 (green does not overflow). Accordingly, a fourth decompression mode should be used as defined in the present invention, FLAT.
En este ejemplo, se calculan tres valores de color mediante la expansión a RGB888 de los componentes 712, 714,In this example, three color values are calculated by expanding to RGB888 of components 712, 714,
716; 722, 724, 726; 732, 734, 736 de color de las tres claves 710, 720, 730.716; 722, 724, 726; 732, 734, 736 color of the three keys 710, 720, 730.
R 0 : 011001 bin ^ 01100101 bin= 101R 0 : 011001 bin ^ 01100101 bin = 101
G 0 : 0101011 bin ^ 01010110bin=86G 0 : 0101011 bin ^ 01010110bin = 86
Bq: 000010bin ^ 00001000bin=8B q : 000010bin ^ 00001000bin = 8
Rh: 111001 bin ^ 11100111 bin =231R h : 111001 bin ^ 11100111 bin = 231
Gh: 1001110bin ^ 10011101 bin=157G h : 1001110bin ^ 10011101 bin = 157
Bh: 001011 bin ^ 00101100bin= 44Bh: 001011 bin ^ 00101100bin = 44
Rv: 011100bin ^ 01110001 bin=113R v : 011100bin ^ 01110001 bin = 113
Gv: 0110001 bin ^ 01100010bin=98G v : 0110001 bin ^ 01100010bin = 98
Bv: 010001 bin ^ 01000101 bin =69B v : 010001 bin ^ 01000101 bin = 69
Después se ponderan estos valores de color y se combinan según las enseñanzas de la Tabla 6 precedente. La representación de color para el primer elemento (0,0) de imagen es simplemente el primer valor (101, 86, 8). La representación de color para el elemento (1,0) de imagen es tres cuartas partes del primer valor de color y unaThese color values are then weighted and combined according to the teachings in Table 6 above. The color representation for the first image element (0,0) is simply the first value (101, 86, 8). The color representation for the image element (1,0) is three quarters of the first color value and one
3 13 1
cuarta parte del segundo valor de color, es decir, ^-(101,86, 8)+ — (231,157, 44) = ( l33,104,17). Se prosigue este procedimiento para el resto de los elementos de imagen, a fin de proporcionar una representación descodificada del bloque de imagen.quarter of the second color value, that is, ^ - (101.86, 8) + - (231,157, 44) = (l33,104.17). This procedure is continued for the rest of the image elements, in order to provide a decoded representation of the image block.
Aspectos de implementaciónAspects of implementation
El esquema de codificación de imagen (codificación de bloques de imagen) y de descodificación de imagen (descodificación o procesamiento de bloques de imagen) según la presente invención podría 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 imágenes. Un terminal de este tipo podría ser un ordenador, por ejemplo un ordenador personal (PC, por sus siglas en inglés), una consola de juegos o un cliente ligero, por ejemplo un asistente personal digital (PDA), una unidad móvil y un teléfono.The image coding scheme (image block coding) and image decoding (decoding or processing of image blocks) according to the present invention could be provided in a data processing system in general, for example in a user terminal or other unit configured to process and / or represent images. Such a terminal could be a computer, for example a personal computer (PC), a game console or a thin client, for example a personal digital assistant (PDA), a mobile unit and a telephone .
Terminal de usuarioUser terminal
La Figura 22 ilustra un terminal 100 de usuario representado por una unidad móvil. Sin embargo, la invención no está limitada a las unidades móviles, y podría 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 móvil 100 directamente implicados en la presente invención.Figure 22 illustrates a user terminal 100 represented by a mobile unit. However, the invention is not limited to mobile units, and could be implemented in other terminals and data processing units, such as PC computers and game consoles. Only means and elements of the mobile unit 100 directly involved in the present invention are illustrated in the Figure.
La unidad móvil 100 comprende una unidad (central) 200 de procesamiento (CPU, por sus siglas en inglés) para procesar datos, entre ellos datos de imagen, dentro de la unidad móvil 100. Se proporciona un sistema gráfico 130 en la unidad móvil 100 para gestionar datos de imagen y datos gráficos. En particular, el sistema gráfico 130 está adaptado para representar o visualizar imágenes en una pantalla conectada 120 u otra unidad de visualización. La unidad móvil 100 también 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) según la presente invención.The mobile unit 100 comprises a processing unit (central) 200 (CPU) for processing data, including image data, within the mobile unit 100. A graphic system 130 is provided in the mobile unit 100 to manage image data and graphic data. In particular, the graphic system 130 is adapted to represent or display images on a connected screen 120 or other display unit. The mobile unit 100 also comprises a storage or memory 140 for storing data therein. In this memory 140, image data, in particular encoded image data (encoded image blocks) according to the present invention, can be stored.
En la unidad móvil 100 se proporciona un codificador 210 de imágenes según la presente invención. Este codificador 210 está configurado para codificar una imagen o textura a una representación codificada de la imagen (o textura). Como se ha discutido antes, tal representación codificada comprende una secuencia o archivo de múltiples bloques de imagen codificados. Este codificador 210 de imágenes 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 gráfico 130 o en otro lugar de la unidad móvil 100.An image encoder 210 according to the present invention is provided in the mobile unit 100. This encoder 210 is configured to encode an image or texture to an encoded representation of the image (or texture). As discussed above, such encoded representation comprises a sequence or file of multiple encoded image blocks. This image encoder 210 can be provided as software running on the CPU 200, as illustrated in Figure. Alternatively, or additionally, the encoder 210 can be arranged in the graphic system 130 or elsewhere in the mobile unit 100.
Se puede proporcionar una representación codificada de una imagen procedente del codificador 210 de bloques a la memoria 140 a través de un bus (de memoria) 150, para almacenarla en la misma hasta una representación 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 inglés) para ser transmitidos (inalámbricamente o por cable) a otros terminales o unidades externos. Esta unidad I/O 110 también puede estar adaptada para recibir datos de imagen desde una unidad externa. Estos datos de imagen podrían ser una imagen que debe ser codificada por el codificador 210 de imágenes o datos codificados de imagen que deben ser descodificados. También sería posible almacenar la representación de imagen codificada en una memoria de texturas dedicada prevista, por ejemplo, en el sistema gráfico 130. Además, también, o como alternativa, se podrían almacenar (temporalmente) partes de la imagen codificada, en una memoria caché de texturas, por ejemplo, en el sistema gráfico 130.An encoded representation of an image from the block encoder 210 can be provided to the memory 140 via a (memory) bus 150, for storage therein to a further representation of the image. Alternatively, or additionally, the encoded image data can be forwarded to an input and output unit 110 (I / O) to be transmitted (wirelessly or by cable) to other terminals or external units. This I / O unit 110 can also be adapted to receive image data from an external unit. This image data could be an image that must be encoded by the image encoder 210 or image encoded data that must be decoded. It would also be possible to store the encoded image representation in a dedicated texture memory provided, for example, in graphic system 130. In addition, also, or alternatively, parts of the encoded image could be stored (temporarily) in a cache of textures, for example, in graphic system 130.
Se proporciona en la unidad móvil 100 un descodificador 220 de imágenes según la presente invención para descodificar una imagen codificada con el fin de generar una representación de la imagen descodificada. Esta representación descodificada podría corresponder a toda la imagen original o a una parte de la misma. El descodificador 220 de imágenes proporciona datos de imagen descodificados al sistema gráfico 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 imágenes en el sistema gráfico 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 móvil 100.An image decoder 220 according to the present invention is provided in the mobile unit 100 for decoding an encoded image in order to generate a representation of the decoded image. This decoded representation could correspond to the entire original image or to a part of it. The image decoder 220 provides decoded image data to the graphic system 130, which in turn normally processes the data before rendering or displaying it on the screen 120. The image decoder 220 can be arranged in the graphic system 130, as is illustrated in the figure. Alternatively, or additionally, decoder 200 can be provided as software running on CPU 200 or elsewhere in mobile unit 100.
La unidad móvil 100 podría estar equipada con un codificador 210 de imágenes y con un descodificador 220 de imágenes, como se ilustra en la Figura. Sin embargo, para algunos terminales 100 podría ser posible incluir solo un codificador 210 de imágenes. En tal caso, se podrían transmitir datos de imagen codificados a otro terminal que realice la descodificación y, posiblemente, la representación de la imagen. En consecuencia, un terminal 100 podría incluir solo un descodificador 220 de imágenes, es decir, ningún codificador. Un terminal 100 de este tipo recibe entonces de otro terminal una señal que comprende datos de imagen codificados y la descodifica para generar una representación de imagen descodificada. Por tanto, se podría transmitir de forma inalámbrica la señal de imagen codificada entre los terminales, utilizando transmisor y receptor de radio. Como alternativa, se podrían emplear otras técnicas para distribuir imágenes y representaciones de imagen codificadas entre terminales según la invención, tales como Bluetooth®, técnicas IR utilizando puertos IR, y transferencia cableada de datos de imagen entre terminales. También se podrían utilizar tarjetas o chips de memoria que se pueden conectar e intercambiar entre los terminales para esta distribución de datos de imagen entre terminales.The mobile unit 100 could be equipped with an image encoder 210 and with an image decoder 220, as illustrated in Figure. However, for some terminals 100 it may be possible to include only one image encoder 210. In such a case, encoded image data could be transmitted to another terminal that performs decoding and, possibly, image representation. Accordingly, a terminal 100 could include only an image decoder 220, that is, no encoder. A terminal 100 of this type then receives from another terminal a signal comprising encoded image data and decodes it to generate a decoded image representation. Therefore, the encoded image signal could be transmitted wirelessly between the terminals, using radio transmitter and receiver. Alternatively, other techniques could be used to distribute coded images and image representations between terminals according to the invention, such as Bluetooth®, IR techniques using IR ports, and wired transfer of image data between terminals. You could also use memory cards or chips that can be connected and exchanged between terminals for this distribution of image data between terminals.
Las unidades 110, 130, 200, 210 y 220 de la unidad móvil 100 pueden proporcionarse como software, hardware o una combinación de ambos.Units 110, 130, 200, 210 and 220 of mobile unit 100 may be provided as software, hardware or a combination of both.
Codificador de imágenesImage Encoder
La Figura 23 ilustra un diagrama de bloques de una realización de un codificador 210 de imágenes según la presente invención. El codificador 210 comprende típicamente un desintegrador 215 de imágenes para descomponer o dividir una imagen de entrada en varios bloques de imagen. Preferiblemente, el desintegrador 215 está configurado para descomponer la imagen en bloques de imagen que comprenden dieciséis elementos de imagen (píxeles, téxeles o vóxeles), es decir, que tienen un tamaño general de 4x4 elementos de imagen.Figure 23 illustrates a block diagram of an embodiment of an image encoder 210 according to the present invention. Encoder 210 typically comprises an image disintegrator 215 for break down or divide an input image into several image blocks. Preferably, the blaster 215 is configured to decompose the image into image blocks comprising sixteen image elements (pixels, pixels or voxels), that is, having a general size of 4x4 image elements.
Este desintegrador 215 podría estar adaptado para descomponer distintas imágenes de entrada en bloques de imagen con distintos tamaños. En tal caso, el desintegrador 215 recibe preferiblemente información de entrada, que permite la identificación del formato de bloque de imagen a utilizar para una imagen dada.This disintegrator 215 could be adapted to decompose different input images into image blocks with different sizes. In such a case, the disintegrator 215 preferably receives input information, which allows the identification of the image block format to be used for a given image.
Esta realización del codificador 210 de imágenes comprende un único codificador 300 de bloques. Este codificador 300 de bloques codifica el bloque o bloques de imagen recibidos desde el desintegrador de imágenes para generar la representación o representaciones de bloque codificadas. El tamaño global de la representación de bloque es menor que el tamaño correspondiente del bloque de imagen sin codificar. El codificador 300 de bloques está configurado preferiblemente para procesar (codificar) secuencialmente cada bloque de imagen procedente del desintegrador 215.This embodiment of the image encoder 210 comprises a single block encoder 300. This block encoder 300 encodes the image block or blocks received from the image disintegrator to generate the encoded block representation or representations. The overall size of the block representation is smaller than the corresponding size of the uncoded image block. The block encoder 300 is preferably configured to sequentially process (encode) each image block from the disintegrator 215.
En una implementación alternativa, el codificador 210 incluye múltiples codificadores 300 de bloques para procesar en paralelo múltiples bloques de imagen procedentes del desintegrador 215 de imágenes, lo que reduce el tiempo total de codificación de imágenes.In an alternative implementation, the encoder 210 includes multiple block encoders 300 for processing multiple image blocks in parallel from the image disintegrator 215, which reduces the total image encoding time.
Las unidades 215 y 300 del codificador 210 de imágenes pueden proporcionarse como software, hardware o una combinación de ambos. Las unidades 215 y 300 pueden implementarse juntas en el codificador 210 de imagen. Como alternativa, también es posible una implementación distribuida, siendo proporcionadas algunas de las unidades en otra parte de la unidad móvil.Units 215 and 300 of image encoder 210 may be provided as software, hardware or a combination of both. Units 215 and 300 can be implemented together in image encoder 210. Alternatively, a distributed implementation is also possible, with some of the units being provided elsewhere in the mobile unit.
Codificador de bloquesBlock encoder
La Figura 24 ilustra un diagrama de bloques de una realización de un codificador 300 de bloques según la presente invención, tal como el codificador de bloques del codificador de imágenes 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 implementación preferida, el asignador 310 de pesos asigna un peso Z de color por cada elemento de imagen del bloque, donde Z es un número múltiple que es igual al número de claves de color que un cuantificador 320 color determina para el bloque de imagen. En otra realización 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 monótonamente a lo largo de una fila o/y columna de elementos de imagen del bloque. La asignación de pesos realizada por el asignador 310 del codificador 300 de bloques de elementos de imagen de un bloque se lleva a cabo preferiblemente basándose en la posición 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 está configurado para determinar, basándose al menos parcialmente en los pesos de color asignados por el asignador 310, al menos dos claves de color para el bloque de imagen. En una implementación preferida, el cuantificador 320 de color determina tres claves de color, preferiblemente tres claves RGB676.Figure 24 illustrates a block diagram of an embodiment of a block encoder 300 according to the present invention, such as the block encoder of the image encoder of Figure 23. The encoder 300 comprises a weight allocator 310 for assigning weights of color to at least a subset of the image elements of an image block to be compressed. In a preferred implementation, weight allocator 310 assigns a color weight Z for each image element of the block, where Z is a multiple number that is equal to the number of color keys that a color quantizer 320 determines for the image block . In another preferred embodiment, the allocator 310 assigns color weights to the image elements of a block so that the values of the color components of at least one color component of the color representations used to represent the original colors of the Image elements change monotonously along a row or / and column of block image elements. The assignment of weights by the allocator 310 of the image element block encoder 300 of a block is preferably carried out based on the position of the image elements, that is, the relative coordinates of the image elements in the block. . The color quantizer 320 of the block encoder 300 is configured to determine, at least partially based on the color weights assigned by the allocator 310, at least two color keys for the image block. In a preferred implementation, the color quantizer 320 determines three color keys, preferably three RGB676 keys.
Las unidades 310 y 320 del codificador 300 de bloques pueden proporcionarse como software, hardware o una combinación de ambos. Las unidades 310 y 320 se pueden implementar juntas en el codificador 300 de bloques. Como alternativa, también es posible una implementación distribuida, siendo proporcionadas algunas de las unidades en otra parte del codificador de imágenes.Units 310 and 320 of block encoder 300 may be provided as software, hardware or a combination of both. Units 310 and 320 can be implemented together in block encoder 300. Alternatively, a distributed implementation is also possible, with some of the units being provided elsewhere in the image encoder.
La Figura 25 es un diagrama de bloques esquemático de otra realización de un codificador 300 de bloques según la presente invención. Este codificador 300 de bloques está adaptado para funcionar según diferentes modos de compresión, preferiblemente cuatro modos diferentes. En un primer modo de compresión, el asignador 310 de pesos y el cuantificador 320 de color se hacen funcionar conforme a la discusión precedente en relación con la Figura 24. Por lo tanto, esta da lugar a un bloque de imagen comprimido que comprende tres claves de color y un índice de modo, que se describirá más adelante. En la Figura 17 se ilustra un ejemplo de un bloque comprimido de este tipo. En el modo de compresión iPACKMAN/ETC, se hace funcionar el cuantificador 320 de color para determinar una primera clave de color que es una representación de un primer valor de color y para determinar una segunda clave de color como una representación 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 representación de al menos un conjunto de múltiples 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, índices de tabla de una tabla 500 de modificadores que comprende múltiples conjuntos de modificadores de este tipo. En el codificador 300 de bloques se proporciona un selector 350 de índice con el fin de determinar, para cada elemento de imagen del bloque, un índice 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. Figure 25 is a schematic block diagram of another embodiment of a block encoder 300 according to the present invention. This block encoder 300 is adapted to operate according to different compression modes, preferably four different modes. In a first compression mode, the weight allocator 310 and the color quantizer 320 are operated according to the preceding discussion in relation to Figure 24. Therefore, this results in a compressed image block comprising three keys of color and a mode index, which will be described later. An example of such a compressed block is illustrated in Figure 17. In iPACKMAN / ETC compression mode, the color quantizer 320 is operated to determine a first color key that is a representation of a first color value and to determine a second color key as a representation of a differential color, which can be added to the first color value to obtain a second color value. A quantifier 340 of modifiers is operated in this way to determine at least one, and preferably two, intensity keys as a representation of at least one set of multiple intensity modifiers used to modify the first or second color value in order to Get color representations. The intensity keys are preferably table indices of a table 500 of modifiers comprising multiple sets of modifiers of this type. In the block encoder 300 an index selector 350 is provided in order to determine, for each image element of the block, an intensity index associated with one of the intensity modifiers of the set or sets of modifiers represented by the key or the keys of intensity.
En los dos modos de THUMB, el cuantificador 320 de color determina una primera clave de color como una representación de un primer valor de color. Además, el cuantificador 320 determina una segunda clave como representación de un segundo valor de color, donde estos dos valores están ubicados en una primera línea con una primera dirección 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 representación de al menos un modificador de color aplicable para modificar el primer valor de color a lo largo de una segunda línea que tiene una segunda dirección en el espacio de color. Esta modificación de color da lugar a múltiples representaciones de color a lo largo de la segunda línea. Las segunda y primera direcciones no son paralelas. Después, el selector 350 de índice selecciona, para cada elemento de imagen, un índice de color asociado con una representación de color seleccionada de entre i) las representaciones de color a lo largo de la segunda línea e ii) al menos una representación de color basada en el segundo valor de color.In both THUMB modes, the color quantizer 320 determines a first color key as a representation of a first color value. In addition, quantizer 320 determines a second key as a representation of a second color value, where these two values are located on a first line with a first address in the color space. The modifier quantizer 340 is operated in this way to provide a color modifier key as a representation of at least one applicable color modifier to modify the first color value along a second line having a second address in The color space. This color modification results in multiple color representations along the second line. The second and first addresses are not parallel. Then, the index selector 350 selects, for each image element, a color index associated with a color representation selected from i) the color representations along the second line and ii) at least one color representation based on the second color value.
En una implementación preferida, se determinan múltiples representaciones candidatas comprimidas para un bloque de imagen dado, una representación por cada modo de compresión. Después se implementa un selector 360 de modo para seleccionar la representación candidata que se debe utilizar como representación comprimida para el bloque de imagen. Esta selección se lleva a cabo preferiblemente basándose en una comparación de estimaciones de error, una de tales estimaciones por cada modo de compresión. El selector 360 de modo selecciona preferiblemente el candidato que lleve a un error menor. A continuación, un gestor 370 de índice de modo compila un índice de modo representativo del modo de compresión que da lugar al error más pequeño, es decir, el modo utilizado cuando se genera el candidato seleccionado por el selector 360 de modo. Este índice de modo constituye una parte del bloque de imagen comprimida.In a preferred implementation, multiple compressed candidate representations are determined for a given image block, one representation per compression mode. A mode selector 360 is then implemented to select the candidate representation to be used as a compressed representation for the image block. This selection is preferably carried out based on a comparison of error estimates, one such estimate for each compression mode. Mode selector 360 preferably selects the candidate that leads to a minor error. Next, a mode index manager 370 compiles a mode index representative of the compression mode that results in the smallest error, that is, the mode used when the candidate selected by the mode selector 360 is generated. This mode index constitutes a part of the compressed image block.
Las unidades 310 a 370 del codificador 300 de bloques pueden proporcionase como software, hardware o una combinación de ambos. Las unidades 310 a 370 y 500 se pueden implementar juntas en el codificador 300 de bloques. Como alternativa, también es posible una implementación distribuida, siendo proporcionadas algunas de las unidades en otra parte del codificador de imágenes.Units 310 to 370 of the block encoder 300 may be provided as software, hardware or a combination of both. Units 310 to 370 and 500 can be implemented together in the block encoder 300. Alternatively, a distributed implementation is also possible, with some of the units being provided elsewhere in the image encoder.
Descodificador de imágenesImage decoder
La Figura 26 ilustra un diagrama de bloques de una realización de un descodificador 220 de imágenes según la presente invención. El descodificador 220 de imágenes comprende preferiblemente un selector 222 de bloques que está 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 descodificación. El selector 222 de bloques recibe preferiblemente información de entrada asociada con los datos de imagen codificados, por ejemplo desde un encabezado o un motor de representación. Entonces, basándose en la información de entrada, se calcula una dirección de un bloque de imagen codificado que tiene el o los elementos de imagen deseados. Esta dirección calculada depende preferiblemente de las coordenadas del elemento de imagen (píxel, téxel o vóxel) dentro de una imagen. Utilizando la dirección, el selector 222 de bloques identifica el bloque de imagen codificado de la memoria. Después, se toma del almacenamiento este bloque de imagen codificado identificado y se le envía al descodificador 400 de bloques.Figure 26 illustrates a block diagram of an embodiment of an image decoder 220 according to the present invention. The image decoder 220 preferably comprises a block selector 222 that is adapted to select, for example from a memory, the encoded image block or blocks that must be provided to a block decoder 400 for decoding. The block selector 222 preferably receives input information associated with the encoded image data, for example from a header or a rendering engine. Then, based on the input information, an address of an encoded image block having the desired image element (s) is calculated. This calculated direction preferably depends on the coordinates of the image element (pixel, pixel or voxel) within an image. Using the address, the block selector 222 identifies the encoded image block of the memory. Then, this identified coded image block is taken from storage and sent to the block decoder 400.
El acceso (aleatorio) a elementos de imagen de un bloque de imagen permite ventajosamente la descodificación selectiva solamente de las partes necesarias de una imagen. Además, se puede descodificar la imagen siguiendo cualquier orden en el que se requieran los datos. Por ejemplo, en la asignación de texturas se pueden necesitar solamente partes de la textura, y generalmente se requerirán estas partes en un orden no secuencial. Por lo tanto, la descodificación de imágenes de la presente invención puede aplicarse ventajosamente para procesar solo una parte o sección de una imagen.The (random) access to image elements of an image block advantageously allows selective decoding of only the necessary parts of an image. In addition, the image can be decoded in any order in which the data is required. For example, in the allocation of textures only parts of the texture may be needed, and these parts will generally be required in a non-sequential order. Therefore, the decoding of images of the present invention can be advantageously applied to process only a part or section of an image.
A continuación se envía al descodificador 400 de bloques el bloque de imagen codificado seleccionado. Además del bloque de imagen, el descodificador 400 recibe preferiblemente información que especifica los elementos de imagen del bloque que deben descodificarse. La información podría especificar que se debe descodificar todo el bloque de imagen, es decir, todos los elementos de imagen del mismo. No obstante, la información recibida podría identificar solamente un único elemento de imagen o unos pocos de los elementos de imagen que deben descodificarse. El descodificador 400 de bloques genera entonces una representación descodificada del elemento o elementos de imagen del bloque. Esta representación descodificada es preferiblemente un color P-bit, donde P es el número de bits por elemento de imagen en la imagen original, por ejemplo, un color RGB de 24 bits.The selected encoded image block is then sent to the block decoder 400. In addition to the image block, decoder 400 preferably receives information specifying the image elements of the block to be decoded. The information could specify that the entire image block must be decoded, that is, all the image elements thereof. However, the information received could identify only a single image element or a few of the image elements to be decoded. The block decoder 400 then generates a decoded representation of the image element or elements of the block. This decoded representation is preferably a P-bit color, where P is the number of bits per image element in the original image, for example, a 24-bit RGB color.
Se podría disponer en el descodificador 220 de imágenes un compositor 224 de imágenes opcional. Este compositor recibe los elementos de imagen descodificados desde el descodificador 400 de bloques y los compone para generar un píxel que se puede representar o visualizar en una pantalla. Como alternativa, se podría disponer este compositor 224 de imágenes en el sistema gráfico.An optional image composer 224 could be arranged in the image decoder 220. This composer receives the decoded image elements from the block decoder 400 and composes them to generate a pixel that can be represented or displayed on a screen. Alternatively, this image composer 224 could be arranged in the graphic system.
Como alternativa, el descodificador 220 de imágenes comprende múltiples descodificadores 400 de bloques. Al tener acceso a múltiples descodificadores 400 de bloques, el descodificador 220 de imágenes puede procesar (descodificar) en paralelo múltiples bloques de imagen codificados. Estos descodificadores múltiples 400 de bloques permiten un procesamiento paralelo que aumenta el rendimiento de procesamiento y la eficacia del descodificador 220 de imágenes. Alternatively, the image decoder 220 comprises multiple block decoders 400. By having access to multiple block decoders 400, the image decoder 220 can process (decode) in parallel multiple encoded image blocks. These multiple block decoders 400 allow parallel processing that increases the throughput and efficiency of the image decoder 220.
Las unidades 222, 224 y 400 del descodificador 220 de imágenes pueden proporcionarse como software, hardware o una combinación de ambos. Las unidades 222, 224 y 400 se pueden implementar juntas en el descodificador 220 de imágenes. Como alternativa, también es posible una implementación distribuida, siendo proporcionadas algunas de las unidades en otra parte del terminal de usuario.Units 222, 224 and 400 of the image decoder 220 may be provided as software, hardware or a combination of both. Units 222, 224 and 400 can be implemented together in the image decoder 220. As an alternative, a distributed implementation is also possible, some of the units being provided elsewhere in the user terminal.
Descodificador de bloquesBlock decoder
La Figura 27 es una ilustración de una realización de un descodificador 400 de bloques según la presente invención. El descodificador 400 de bloques comprende un generador 410 de color que genera al menos dos valores de color basándose en las al menos dos claves de color de la representación de bloque comprimida. Preferiblemente, este generador 410 de color está configurado para expandir o ampliar los componentes cuantificados de color de las claves de color a, preferiblemente, RGB888. En el descodificador 400 de bloques está 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 implementación preferida, los elementos de imagen correspondientes en una posición 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 según la presente invención. 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.Figure 27 is an illustration of an embodiment of a block decoder 400 according to the present invention. The block decoder 400 comprises a color generator 410 that generates at least two color values based on the at least two color keys of the compressed block representation. Preferably, this color generator 410 is configured to expand or expand the quantized color components of the color keys to, preferably, RGB888. A weight manager 420 is arranged in the block decoder 400 in order to provide, for each image element to be decoded, color weights assigned to the image element or elements. In a preferred implementation, the corresponding image elements in a given position of different image blocks have the same color weights assigned. Therefore, the color weights depend on the coordinates or the positions of the image elements in the block, but do not change for different compressed blocks according to the present invention. Thus, weight manager 420 preferably provides color weights based on positions / coordinates of image elements within the image block.
Al generador 410 de color y al gestor 420 de pesos está conectada un calculador 430 de color que utiliza los pesos de color proporcionados y los valores de color generados para determinar una representación de color para su uso como una representación 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.A color calculator 430 is connected to the color generator 410 and the weight manager 420 using the color weights provided and the color values generated to determine a color representation for use as a representation of the original color of the image element . Preferably, the calculator 430 is implemented to combine the color values from the generator 410 but weighted with the color weights from the weight manager 420.
Las unidades 410 a 430 del descodificador 400 de bloques pueden proporcionarse como software, hardware o una combinación de ambos. Las unidades 410 a 430 se pueden implementar juntas en el descodificador 400 de bloques. Como alternativa, también es posible una implementación distribuida, siendo proporcionadas algunas de las unidades en otra parte del descodificador de imágenes.Units 410 to 430 of the block decoder 400 may be provided as software, hardware or a combination of both. Units 410 to 430 can be implemented together in the block decoder 400. As an alternative, a distributed implementation is also possible, some of the units being provided elsewhere in the image decoder.
La Figura 28 es un diagrama de bloques esquemático de otra realización de un descodificador 400 de bloques según la presente invención adaptado para el funcionamiento multimodal. El descodificador 400 de bloques comprende un selector 460 de modo, que selecciona entre múltiples modos disponibles, preferiblemente cuatro modos, el modo de descompresión a utilizar cuando se descomprime la representación de bloque comprimida en cuestión. Este selector 460 de modo utiliza un índice de modo en el bloque comprimido para seleccionar el modo correcto.Figure 28 is a schematic block diagram of another embodiment of a block decoder 400 according to the present invention adapted for multimodal operation. The block decoder 400 comprises a mode selector 460, which selects among multiple available modes, preferably four modes, the decompression mode to be used when the compressed block representation in question is decompressed. This mode selector 460 uses a mode index on the compressed block to select the correct mode.
Si el selector 460 selecciona un primer modo de descompresión, se hacen funcionar el generador 410 de color, el gestor 420 de pesos y el calculador 430 de color como se ha descrito en lo que antecede en relación con la Figura 27.If the selector 460 selects a first decompression mode, the color generator 410, the weight manager 420 and the color calculator 430 are operated as described above in relation to Figure 27.
Si, en cambio, el selector 460 selecciona un segundo modo de descompresión que corresponde a iPACKMAN/ETC, el generador 410 de color determina un valor de color basándose en la primera clave de color o basándose en la primera y segunda claves de color (dependiendo de la posición 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, basándose en uno de la al menos una clave de intensidad, un conjunto de múltiples modificadores de intensidad, preferiblemente tomados de una tabla 500 de modificadores. Un selector 450 de color selecciona, utilizando un índice de intensidad asociado con el elemento de imagen en cuestión, uno de los modificadores de intensidad de entre el conjunto proporcionado. A continuación, 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 representación de color para el elemento de imagen.If, instead, selector 460 selects a second decompression mode corresponding to iPACKMAN / ETC, the color generator 410 determines a color value based on the first color key or based on the first and second color keys (depending of the actual position of the block image element). In the first case, the colors of the quantizer component simply expand to, preferably, RGB888. In the second case, the differential components of the second key are added to the derivable color components of the first key, in order to determine the color value. In the block decoder 400 a modifier manager 470 is provided to provide, based on one of the at least one intensity key, a set of multiple intensity modifiers, preferably taken from a table 500 of modifiers. A color selector 450 selects, using an intensity index associated with the image element in question, one of the intensity modifiers from the set provided. Next, a color modifier 440 uses this selected intensity modifier to modify the intensity of the color value in order to calculate a color representation for the image element.
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 basándose en la segunda clave de color. Los dos valores están ubicados en una primera línea que tiene una primera dirección en el espacio de color. El modificador 440 de color genera múltiples representaciones de color a lo largo de una segunda línea que tiene una segunda dirección distinta, modificando el primer valor de color con al menos un modificador de color representada por la clave de modificador de color. A continuación, el selector 450 de color selecciona, basándose en la secuencia de índices de color, una representación de color de entre i) las múltiples representaciones de color a lo largo de la segunda línea e ii) al menos una representación de color basada en el segundo valor de color.If the mode selector 460 selects the THUMB modes, the color generator 410 determines a first color value using the first color key, and determines a second color value based on the second color key. The two values are located on a first line that has a first address in the color space. The color modifier 440 generates multiple color representations along a second line having a different second address, modifying the first color value with at least one color modifier represented by the color modifier key. Next, the color selector 450 selects, based on the sequence of color indices, a color representation of between i) the multiple color representations along the second line and ii) at least one color representation based on The second color value.
Las unidades 410 a 470 del descodificador 400 de bloques pueden proporcionarse como software, hardware o una combinación de ambos. Las unidades 410 a 470 y 500 se pueden implementar juntas en el descodificador 400 de bloques. Como alternativa, también es posible una implementación distribuida, siendo proporcionadas algunas de las unidades en otra parte del descodificador de imágenes.Units 410 to 470 of the block decoder 400 may be provided as software, hardware or a combination of both. Units 410 to 470 and 500 can be implemented together in the block decoder 400. Alternatively, a distributed implementation is also possible, with some of the the units in another part of the image decoder.
Un experto en la técnica comprenderá que se pueden efectuar diversas modificaciones y cambios en la presente invención sin apartarse del alcance de la misma, que está definido por las reivindicaciones adjuntas.One skilled in the art will understand that various modifications and changes can be made to the present invention without departing from the scope thereof, which is defined by the appended claims.
ReferenciasReferences
[1] Delp, Mitchell: Image Compression using Block Truncation Coding. IEEE Transactions on Communications 2, 9 (1979), 1335-1342[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, págs. 215-223[2] Campbell, Defant, Frederiksen, Joyce, Leske, Lindberg, Sandin: Two Bit / Pixel Full Color Encoding. In Proceedings of SIGGRAPH (1986), vol. 22, p. 215-223
[3] Patente de EE. UU. 5,956,431[3] US Patent UU. 5,956,431
[4] S. Fenney, "Texture compression using low-frequency signal modulation", Graphics Hardware 2003, págs. 84-91, julio de 2003[4] S. Fenney, "Texture compression using low-frequency signal modulation", Graphics Hardware 2003, p. 84-91, July 2003
[5] Solicitud internacional WO 2005/059836[5] International application WO 2005/059836
[6] Solicitud internacional WO 2006/006915[6] International application 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[7] Strom, Akenine-Moller: iPACKMAN high-quality, low complexity texture compression for mobile phones, Graphics Hardware 05, Los Angeles, USA, June 2005
[8] Strom, Pettersson: "Texture compression: THUMB - Two Hues Using Modified Brightness", SIGRAD'05, Lund, Suecia, noviembre de 2005 [8] Strom, Pettersson: "Texture compression: THUMB - Two Hues Using Modified Brightness", SIGRAD'05, Lund, Sweden, November 2005
Claims (17)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE0501260 | 2005-05-27 | ||
PCT/SE2005/001070 WO2006006915A1 (en) | 2004-07-08 | 2005-07-01 | Multi-mode image processing |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2728097T3 true ES2728097T3 (en) | 2019-10-22 |
Family
ID=39676222
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES06747807.3T Active ES2569419T3 (en) | 2005-05-27 | 2006-05-24 | Weight based image processing |
ES15201105T Active ES2728097T3 (en) | 2005-05-27 | 2006-05-24 | Weight based image processing |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES06747807.3T Active ES2569419T3 (en) | 2005-05-27 | 2006-05-24 | Weight based image processing |
Country Status (7)
Country | Link |
---|---|
US (3) | US8457417B2 (en) |
EP (1) | EP3023940B1 (en) |
CN (1) | CN101233542B (en) |
DK (1) | DK1886277T3 (en) |
ES (2) | ES2569419T3 (en) |
RU (1) | RU2407222C2 (en) |
TR (1) | TR201906780T4 (en) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3023940B1 (en) * | 2005-05-27 | 2019-02-27 | Telefonaktiebolaget LM Ericsson (publ) | Weight based image processing |
US7853092B2 (en) * | 2007-01-11 | 2010-12-14 | Telefonaktiebolaget Lm Ericsson (Publ) | Feature block compression/decompression |
JP5157796B2 (en) | 2008-09-30 | 2013-03-06 | ヤマハ株式会社 | Lossless compression encoding apparatus and decoding apparatus for image data |
US8416255B1 (en) * | 2009-05-22 | 2013-04-09 | Adobe Systems Incorporated | Methods and systems for using colors and color themes |
CN102549623B (en) * | 2009-06-10 | 2014-11-19 | 皇家飞利浦电子股份有限公司 | 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 (en) * | 2011-06-02 | 2012-08-27 | Открытое акционерное общество "Научно-исследовательский институт оптико-электронного приборостроения" (ОАО "НИИ ОЭП") | Method of determining spatial shift of images |
CN102752539B (en) * | 2011-11-30 | 2017-09-12 | 新奥特(北京)视频技术有限公司 | A kind of method for realizing double-color special effect |
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 |
CN106030651B (en) | 2014-03-21 | 2019-06-07 | 华为技术有限公司 | Utilize the level screen research content of improved color table and index map coding method |
CN104954773B (en) * | 2014-03-31 | 2017-04-05 | 鸿富锦精密工业(深圳)有限公司 | Color overlaid decoding method |
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 (en) * | 2014-11-18 | 2021-05-28 | 삼성전자주식회사 | Method and apparatus for processing texture |
WO2016100424A1 (en) * | 2014-12-19 | 2016-06-23 | Mediatek 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 |
RU2767775C1 (en) * | 2018-07-11 | 2022-03-21 | ИНТЕРДИДЖИТАЛ ВиСи ХОЛДИНГЗ, ИНК. | Point cloud processing |
CN109218613B (en) * | 2018-09-18 | 2020-08-14 | Oppo广东移动通信有限公司 | High dynamic range image synthesis method and device, terminal equipment and storage medium |
CN109918065B (en) * | 2019-02-18 | 2022-05-17 | 广州视源电子科技股份有限公司 | Picture code editing method and device, computer equipment and storage medium |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5657374A (en) | 1979-10-16 | 1981-05-19 | Sony Corp | Processor of digital video signal |
RU2024214C1 (en) * | 1990-11-11 | 1994-11-30 | Санкт-Петербургский государственный электротехнический университет им.В.И.Ульянова (Ленина) | Method of color correction of picture signal |
WO1996025010A2 (en) * | 1995-02-03 | 1996-08-15 | Philips Electronics N.V. | Video image colour encoding |
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 |
US5684895A (en) * | 1995-05-11 | 1997-11-04 | Xerox Corporation | Method for decoding a compressed image |
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 (en) * | 1997-06-02 | 2005-11-30 | 富士ゼロックス株式会社 | Image information encoding apparatus and method |
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 (en) * | 1998-07-28 | 2006-08-23 | 富士写真フイルム株式会社 | Information embedding method and apparatus, and recording medium |
US6266165B1 (en) * | 1998-09-30 | 2001-07-24 | Lexmark International, Inc. | Method for morphing n-dimensional data using a scattered data transformation |
JP2000324353A (en) * | 1999-03-11 | 2000-11-24 | Fuji Photo Film Co Ltd | Image processor, method therefor and recording medium |
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 (en) * | 2001-09-07 | 2005-01-19 | 独立行政法人情報通信研究機構 | Multi-mode block coding modulation demodulation method |
US7006699B2 (en) * | 2002-03-27 | 2006-02-28 | Microsoft Corporation | System and method for progressively transforming and coding digital data |
SE0401850D0 (en) | 2003-12-19 | 2004-07-08 | Ericsson Telefon Ab L M | Image processing |
SE526226C2 (en) | 2003-12-19 | 2005-08-02 | Ericsson Telefon Ab L M | Image Processing |
SE0401852D0 (en) * | 2003-12-19 | 2004-07-08 | Ericsson Telefon Ab L M | Image processing |
CA2572967C (en) | 2004-07-08 | 2012-10-16 | Telefonaktiebolaget L M Ericsson (Publ) | Multi-mode image processing |
US7834887B2 (en) * | 2005-04-05 | 2010-11-16 | Samsung Electronics Co., Ltd. | Methods and systems for combining luminance preserving quantization and halftoning |
EP3023940B1 (en) * | 2005-05-27 | 2019-02-27 | Telefonaktiebolaget LM Ericsson (publ) | 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 |
-
2006
- 2006-05-24 EP EP15201105.2A patent/EP3023940B1/en active Active
- 2006-05-24 DK DK06747807.3T patent/DK1886277T3/en active
- 2006-05-24 CN CN2006800276710A patent/CN101233542B/en active Active
- 2006-05-24 ES ES06747807.3T patent/ES2569419T3/en active Active
- 2006-05-24 US US11/915,669 patent/US8457417B2/en active Active
- 2006-05-24 TR TR2019/06780T patent/TR201906780T4/en unknown
- 2006-05-24 ES ES15201105T patent/ES2728097T3/en active Active
- 2006-05-24 RU RU2007148931/09A patent/RU2407222C2/en active
-
2013
- 2013-03-14 US US13/826,578 patent/US9087365B2/en active Active
-
2015
- 2015-05-12 US US14/709,821 patent/US9466125B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20150243051A1 (en) | 2015-08-27 |
US8457417B2 (en) | 2013-06-04 |
US20130287295A1 (en) | 2013-10-31 |
TR201906780T4 (en) | 2019-05-21 |
CN101233542B (en) | 2013-01-23 |
EP3023940A1 (en) | 2016-05-25 |
DK1886277T3 (en) | 2016-05-17 |
US20080187218A1 (en) | 2008-08-07 |
US9466125B2 (en) | 2016-10-11 |
RU2007148931A (en) | 2009-07-10 |
US9087365B2 (en) | 2015-07-21 |
CN101233542A (en) | 2008-07-30 |
EP3023940B1 (en) | 2019-02-27 |
RU2407222C2 (en) | 2010-12-20 |
ES2569419T3 (en) | 2016-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2728097T3 (en) | Weight based image processing | |
RU2407223C2 (en) | Compression of texture based on two shades with modified brightness | |
ES2716560T3 (en) | Image processing | |
US7787691B2 (en) | High quality image processing | |
EP1886277B1 (en) | Weight based image processing | |
US20070019869A1 (en) | Multi-mode alpha image processing | |
US20090202159A1 (en) | Image Processing | |
US8437563B2 (en) | Vector-based image processing | |
CN106717002A (en) | Using free-form deformations in surface reconstruction |