Image data decompression

By employing lossy compression techniques involving multi-level difference tables and integer operations, the complexity of image data compression and data quality degradation in small, low-cost, and low-power systems are resolved. This enables image data processing with a fixed compression ratio, reducing hardware size and power consumption.

CN113452993BActive Publication Date: 2026-03-20IMAGINATION TECH LTD
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2021-03-24
Publication Date
2026-03-20

AI Technical Summary

Technical Problem

Existing technologies struggle to achieve lossless or lossy compression ratios for image data in small, low-cost, and low-power computing systems. Furthermore, existing high-end lossy compression algorithms are complex, while low-end lossy compression technologies lead to data quality degradation.

Method used

A multi-level difference table is used to perform lossy compression and decompression on image data blocks. A fixed compression ratio is achieved through integer operations to avoid complex calculations and data quality degradation. This is implemented using dedicated hardware.

Benefits of technology

Achieve image data compression with a fixed compression ratio in a small, low-cost, and low-power system, avoiding visual artifacts and reducing hardware size and power consumption.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113452993B_ABST
    Figure CN113452993B_ABST
Patent Text Reader

Abstract

The present disclosure relates to image data decompression. The invention provides a computer implemented method and a decompression unit for performing decompression of a compressed data block according to a multi-level difference table. The compressed data block represents a block of image data comprising a plurality of image element values, wherein each level of the multi-level difference table comprises a plurality of entries. A start value of the block of image data is determined using data representing a start value from the compressed data block. A level within the multi-level difference table for the block of image data is identified using an indication of a level from the compressed data block. For each image element value in the block of image data, one of the entries at the identified level within the multi-level difference table is identified using a respective entry indication from the compressed data block, and the image element value is determined using (i) the determined start value of the block of image data, and (ii) the identified entry at the identified level within the multi-level difference table for the image element value.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] The present disclosure relates to data compression and data decompression. BACKGROUND

[0002] Data compression, whether lossless or lossy, is desirable in many applications where data is stored in memory and / or read from memory. By compressing data prior to storing it in memory, the amount of data transferred to memory can be reduced. An example of data for which data compression is particularly useful is image data. The term "image data" is used herein to refer to two-dimensional data having values corresponding to respective pixel or sample locations of an image. For example, an image can be generated as part of a rendering process on a graphics processing unit (GPU). Image data includes, but is not limited to, depth data to be stored in a depth buffer, pixel data (e.g., color data) to be stored in a frame buffer, texture data to be stored in a texture buffer, and surface normal data to be stored in a surface normal buffer. These buffers can be any suitable type of memory, such as cache memory, a separate memory subsystem, a storage region in a shared memory system, or some combination thereof.

[0003] GPUs can be used to process data in order to generate image data. For example, a GPU can determine pixel values (e.g., color values) of an image to be stored in a frame buffer, which can be output to a display. GPUs typically have a highly parallelized structure for processing large blocks of data in parallel. There is significant commercial pressure to operate GPUs, especially those intended to be implemented on mobile / embedded devices, with reduced latency, reduced power consumption, and reduced physical size (e.g., reduced silicon area). Competitive pressures towards these goals desire the use of higher quality rendering algorithms to produce higher quality images. Reducing memory bandwidth (i.e., reducing the amount of data transferred between a GPU and memory) can significantly reduce latency and power consumption of a system, which is a reason why compressing data prior to transferring it can be particularly useful. This is also true to a lesser extent when considering data moving around within the GPU itself. Moreover, the same issues can be relevant to other processing units, such as central processing units (CPUs), as well as GPUs.

[0004] Figure 1An exemplary computing system 100 that can be implemented in an electronic device such as a mobile / embedded device is shown. The computing system 100 includes a host CPU 102, a GPU 104, a memory 106 (e.g., graphics memory), and a display 108. The CPU 102 is configured to communicate with the GPU 104. Data, which can be compressed data, can be transferred in either direction between the GPU 104 and the memory 106. Images rendered by the GPU 104 (e.g., represented with pixel values) can be stored in the memory 106 and displayed on the display 108 via a display interface 116.

[0005] The GPU 104 includes rendering logic 110, a compression / decompression unit 112, and a memory interface 114. The graphics rendering system 100 is arranged such that data can be transferred in either direction between (i) the CPU 102 and the rendering logic 110; (ii) the CPU 102 and the memory interface 114; (iii) the memory interface 114 and the memory 106; (iv) the rendering logic 110 and the compression / decompression unit 112; (v) the compression / decompression unit 112 and the memory interface 114; and (vi) the memory 106 and the display interface 116. In some examples, the graphics rendering system 100 can be further arranged such that data can be transferred in either direction between the compression / decompression unit 112 and the display interface 116, and such that data can be transferred from the display interface 116 to the display 108.

[0006] In operation, the GPU 104 can process regions of image data individually. The regions can represent, for example, rectangular (including square) portions (or "tiles") of a rendering space (i.e., a two-dimensional space representing, for example, an image region to be rendered). The rendering logic 110 can perform scan conversion and rasterization of graphics primitives (e.g., but not limited to, triangles and lines) using known techniques such as depth testing and texture mapping. The rendering logic 110 can include a cache unit to reduce memory traffic. Some data is read from or written to the memory 106 by the rendering logic 110 via the memory interface 114 (which can include a cache), but for other data, such as data to be stored in a buffer (e.g., a frame buffer), the data is preferably transferred from the rendering logic 110 to the memory interface 114 via the compression / decompression unit 112. The compression / decompression unit 112 reduces the amount of data to be transferred to the memory 106 over an external memory bus by compressing the data.

[0007] The display interface 116 sends data defining a complete image to the display 108. Uncompressed images can be accessed directly from the memory 106. Compressed data can be decompressed via the compression / decompression unit 112 and sent to the display 108 as uncompressed data. In alternative examples, the compressed data can be read directly by the display interface 116, and the display interface 116 can include logic to decompress the compressed data in a manner equivalent to decompression by the compression / decompression unit 112. Although shown as a single entity, the compression / decompression unit 112 can contain multiple parallel compression and / or decompression units for reasons of enhanced performance.

[0008] As is known to those skilled in the art, the rendering logic 110 can generate a set of one or more color values (e.g., RGB or RGBA) for each pixel in the rendered space and store the color values in a frame buffer. The set of color values for a frame can be referred to herein as color data, image data, frame buffer data, or simply frame data. The rendering logic 110 can also generate other image data, such as depth data, surface normal data, lighting data, etc., and can store those image data values in one or more buffers in memory. In some cases, these buffers can be referred to as frame buffers, while in other cases the term "frame buffer" can be reserved for the buffer storing color values or the data to be sent to the display. In some graphics rendering systems, the rendering logic 110 can use image data values stored in a buffer for a particular rendering when performing one or more subsequent renderings. For example, color values generated by one rendering can represent a texture that can be stored (e.g., in compressed form) in the memory 106, and the texture can be read (e.g., and decompressed) from the memory 106 to be applied as a texture to a surface in one or more subsequent renderings. Similarly, surface normal values generated for a geometric model in one rendering can be used to apply lighting effects to the same model during rendering of one or more subsequent renderings. Further, surface depth values generated and stored in one rendering can be read back for one or more subsequent renderings of the same model.

[0009] Because image data (e.g., color data) can be quite large, the memory bandwidth associated with writing image data to a buffer in memory and reading image data from a buffer in memory can be a significant portion of the total memory bandwidth of a graphics processing system and / or GPU. Accordingly, image data is typically compressed by the compression / decompression unit 112 before being stored in a buffer, and decompressed by the compression / decompression unit 112 after being read from a buffer.

[0010] When data is compressed using a lossless compression technique and then decompressed using a complementary lossless decompression technique, the original data can be recovered without loss of data (assuming no errors occurred during compression or decompression). The extent to which data is compressed can be expressed as a compression ratio, where the compression ratio is obtained by dividing the size of the uncompressed data by the size of the compressed data. The compression ratio achieved by a lossless compression technique typically depends on the data being compressed. For example, lossless compression techniques tend to be able to achieve relatively high compression ratios when compressing highly correlated data; whereas, lossless compression techniques tend to achieve relatively low compression ratios when compressing uncorrelated (e.g., random) data. Thus, it is difficult to guarantee that a lossless compression technique will achieve a particular compression ratio (e.g., a 2: 1 compression ratio). Thus, if only lossless compression techniques are used, a system typically must be able to handle situations where the desired compression ratio (e.g., 2: 1) cannot be achieved, and, for example, sometimes no compression can be achieved at all using lossless compression techniques.

[0011] In some situations, it can be considered more important to guarantee a compression ratio than to guarantee that no data is lost during compression. In these situations, lossy compression techniques can be used, which can achieve a guaranteed compression ratio, but can lose some data during compression. SUMMARY

[0012] This Summary is provided to introduce some concepts in a simplified form that are further described below in the DETAILED DESCRIPTION. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used in limiting the scope of the claimed subject matter.

[0013] There is provided a computer-implemented method of decompressing a compressed data block according to a multi-level difference table, wherein the compressed data block represents a block of image data comprising a plurality of image element values, wherein each level of the multi-level difference table comprises a plurality of entries, the method comprising: determining a start value for the block of image data using data representative of a start value from the compressed data block; using an indication of a level from the compressed data block to identify a level within the multi-level difference table for the block of image data; for each image element value in the block of image data: using a respective entry indication from the compressed data block to identify one of the entries of the identified level within the multi-level difference table; and determining the image element value using: (i) the determined start value for the block of image data, and (ii) the identified entry at the identified level within the multi-level difference table for the image element value.

[0014] For different levels of the multi-level difference table, the size of the range of values represented by the entries in the level can be different.

[0015] Each entry in the multi-level difference table can represent a value that can be used to represent a difference value between an image element value and a start value for the block of image data.

[0016] The multi-level difference table can be predetermined, i.e., the values of the entries of the multi-level difference table can be determined prior to the start of the method of decompressing the compressed data block.

[0017] The determining the image element values can include summing the determined starting point value for the image data block and the value represented by the identified entry in the multi-level difference table for the identified level of the image element value. The method can further include setting the image element value to a maximum possible image element value if the result of the sum is greater than the maximum possible image element value.

[0018] The data representing the determined starting point value in the compressed data block can have fewer bits than any of the determined image element values in the image data block.

[0019] A first entry in each level of the multi-level difference table can represent a zero value.

[0020] The image element values can each have 8 bits, wherein the image data block can include four image element values such that the image data block can have 32 bits, and wherein the compressed data block can have 16 bits including (i) 5 bits of data representing the determined starting point value, (ii) 3 bits for an indication of the level, and (iii) 2 bits for a respective entry indication of each of the four image element values.

[0021] The compressed data block can be decompressed by performing at least one of an addition operation or a subtraction operation, but the method of decompressing the compressed data block can not involve performing any multiplication or division operations. The image element values can be in integer format, and the at least one operation can operate on the image element values in integer format.

[0022] The image data block can relate to one channel of a multi-channel image data block, wherein compressed data blocks of different channels of the multi-channel image data can be independently decompressed.

[0023] The multi-channel image data block can be color data of a color value block including (i) a first image data block related to a red channel of the color value block, (ii) a second image data block related to a green channel of the color value block, and (iii) a third image data block related to a blue channel of the color value block, and wherein color re-correlation can be performed on the color values prior to independent decompression of compressed data blocks related to the three image data blocks.

[0024] The multi-channel image data can be colour data in RGB format such that each colour value comprises a red value (R), a green value (G) and a blue value (B), wherein the colour re-association can comprise calculating the red value (R) using an image element value (R') that has been decompressed from a first compressed data block and using an image element value (G') that has been decompressed from a second compressed data block according to the equation R = R' + G', wherein the colour re-association can comprise determining the green value (G) using the image element value (G') that has been decompressed from the second compressed data block according to the equation G = G', and wherein the colour re-association can comprise calculating the blue value (B) using an image element value (B') that has been decompressed from a third compressed data block and using the image element value (G') that has been decompressed from the second compressed data block according to the equation B = B' + G'.

[0025] The three compressed data blocks can be independently decompressed to determine multi-channel colour data in a luma-chroma format comprising: (i) a first image data block relating to a luma channel (Y), (ii) a second image data block relating to a first chroma channel (Cb), and (iii) a third image data block relating to a second chroma channel (Cr), and wherein the method can comprise converting the colour data to RGB format such that each colour value comprises a red value (R), a green value (G) and a blue value (B).

[0026] A method of decompressing a compressed data block can be provided, comprising: reading an indication in a header associated with the compressed data block, the indication indicating whether the compressed data block is compressed with a lossless compression technique or a lossy compression technique; and if the indication indicates that the compressed data block is compressed with a lossless compression technique, performing a lossless decompression technique on the compressed data block, thereby decompressing the compressed data block; and if the indication indicates that the compressed data block is compressed with a lossy compression technique, performing any of the decompression methods described herein, thereby decompressing the compressed data block.

[0027] The method can further comprise outputting the image data block for further processing.

[0028] The method can be performed using dedicated hardware.

[0029] A decompression unit configured to decompress a compressed data block according to a multi-level difference table is provided, wherein the compressed data block represents a block of image data comprising a plurality of image element values, wherein each level of the multi-level difference table comprises a plurality of entries, the decompression unit comprising: start value determination logic configured to determine a start value for the block of image data using data representative of a start value from the compressed data block; level identification logic configured to identify a level of the multi-level difference table for a level of the block of image data using an indication of the level from the compressed data block; image element value determination logic configured to, for each image element value in the block of image data: identify one of the entries of the identified level of the multi-level difference table using an indication of the respective entry from the compressed data block; and determine the image element value using: (i) the determined start value for the block of image data, and (ii) the identified entry of the multi-level difference table at the identified level for the image element value.

[0030] The image element value determination logic can be configured to determine the image element values for the block of image data by summing the determined start value for the block of image data and the values represented by the identified entries of the multi-level difference table at the identified level for the image element values.

[0031] The start value determination logic, the level identification logic, and the image element value determination logic can be configured in dedicated hardware.

[0032] A decompression unit configured to decompress a compressed block of image data can be provided, the decompression unit comprising: a first decompression unit configured to perform lossless decompression on the compressed block of image data; a second decompression unit as described in any example herein configured to perform lossy decompression on the block of image data; and decompression technique determination logic configured to read an indication in a header associated with the compressed data block, the indication indicating whether the compressed data block was compressed with a lossless compression technique or with a lossy compression technique, wherein the decompression technique determination logic is configured to cause the first decompression unit to perform lossless decompression on the compressed data block to decompress the compressed data block if the indication indicates that the compressed data block was compressed with a lossless compression technique, and wherein the decompression technique determination logic is configured to cause the second decompression unit to perform lossy decompression on the compressed data block to decompress the compressed data block if the indication indicates that the compressed data block was compressed with a lossy compression technique.

[0033] A decompression unit configured to perform any of the decompression methods described herein can be provided.

[0034] A method of manufacturing a decompression unit as described herein using an integrated circuit manufacturing system can be provided, the method comprising processing a computer readable description of the decompression unit using a layout processing system so as to generate a circuit layout description of an integrated circuit comprising the decompression unit, and manufacturing the decompression unit from the circuit layout description using an integrated circuit production system.

[0035] A computer implemented method of performing lossy compression of a block of image data according to a multi-level difference table can be provided, wherein the block of image data comprises a plurality of image element values, wherein each level of the multi-level difference table comprises a plurality of entries, the method comprising determining a starting point value for the block of image data, determining a level within the multi-level difference table for the block of image data, for each image element value in the block of image data, selecting one of the entries at the determined level within the multi-level difference table, and forming a compressed block of data for the block of image data, the compressed block of data comprising: (i) data representative of the determined starting point value, (ii) an indication of the determined level, and (iii) for each image element value in the block of image data, an indication of the selected entry for the image element value.

[0036] A compression unit configured to perform lossy compression of a block of image data according to a multi-level difference table can be provided, wherein the block of image data comprises a plurality of image element values, wherein each level of the multi-level difference table comprises a plurality of entries, the compression unit comprising: starting point value determining logic configured to determine a starting point value for the block of image data, level determining logic configured to determine a level within the multi-level difference table for the block of image data, entry selection logic configured to, for each image element value in the block of image data, select one of the entries at the determined level within the multi-level difference table, and compressed block forming logic configured to form a compressed block of data for the block of image data, the compressed block of data comprising: (i) data representative of the determined starting point value, (ii) an indication of the determined level, and (iii) for each image element value in the block of image data, an indication of the selected entry for the image element value.

[0037] A compression unit and / or decompression unit can be contained in hardware on an integrated circuit. A method of manufacturing a compression unit and / or decompression unit in an integrated circuit manufacturing system can be provided. An integrated circuit definition data set can be provided which, when processed in an integrated circuit manufacturing system, configures the system to manufacture a compression unit and / or decompression unit. A non-transitory computer readable storage medium can be provided having stored thereon a computer readable description of an integrated circuit which, when processed in an integrated circuit manufacturing system, causes the integrated circuit manufacturing system to manufacture an integrated circuit comprising a compression unit and / or decompression unit.

[0038] An integrated circuit manufacturing system can be provided, the integrated circuit manufacturing system comprising: a non-transitory computer readable storage medium having stored thereon computer readable integrated circuit descriptions describing a compression unit and / or a decompression unit; a layout processing system configured to process the integrated circuit descriptions so as to generate a circuit layout description of an integrated circuit containing the compression unit and / or the decompression unit; and an integrated circuit generation system configured to manufacture the compression unit and / or the decompression unit according to the circuit layout description.

[0039] Computer program code for performing the methods as described herein can be provided. In other words, a computer readable code can be provided which is configured to cause any of the methods described herein to be performed when the code is run. A non-transitory computer readable storage medium having stored thereon computer readable instructions, which when executed at a computer system, cause the computer system to perform a method as described herein can be provided.

[0040] As will be apparent to those skilled in the art, the above features can be combined as appropriate, and can be combined with any of the aspects of the examples described herein. BRIEF DESCRIPTION OF DRAWINGS

[0041] The present application is described by way of example with reference to the accompanying drawings. In the drawings:

[0042] Figure 1 A computer system implementing a compression / decompression unit on a graphics processing unit is shown;

[0043] Figure 2 An image data array comprising image data blocks is shown;

[0044] Figure 3a A lossy compression unit is shown;

[0045] Figure 3b A flowchart of a method of performing lossy compression on an image data block is shown;

[0046] Figure 4 A flowchart of a method of determining levels for a multi-level difference table within a compressed image data block is shown;

[0047] Figure 5 A flowchart of a method of selecting entries for each image element value within an image data block is shown;

[0048] Figure 6 An exemplary format of a compressed data block is shown;

[0049] Figure 7 A lossy decompression unit is shown;

[0050] Figure 8 This is a flowchart of a method for decompressing compressed data blocks;

[0051] Figure 9 A compression unit is shown, which includes a lossless compression unit and a lossy compression unit;

[0052] Figure 10 Is using Figure 9 A flowchart of a method for compressing image data blocks using a compression unit;

[0053] Figure 11 A decompression unit is shown, which includes a lossless decompression unit and a lossy decompression unit;

[0054] Figure 12 Is using Figure 11 A flowchart illustrating the method by which the decompression unit decompresses compressed data blocks; and

[0055] Figure 13 An integrated circuit manufacturing system for producing integrated circuits containing compression or decompression units as described herein is shown.

[0056] The accompanying drawings illustrate various examples. Those skilled in the art will understand that the element boundaries (e.g., boxes, groups of boxes, or other shapes) shown in the drawings represent one example of a boundary. In some examples, it may be that one element can be designed as multiple elements, or multiple elements can be designed as one element. Where appropriate, common reference numerals are used throughout the drawings to indicate similar features. Detailed Implementation

[0057] The following description is given by way of example to enable those skilled in the art to make and use the invention. The invention is not limited to the embodiments described herein, and various modifications to the disclosed embodiments will be readily apparent to those skilled in the art. Embodiments are described by way of example only.

[0058] As mentioned above, a lossy compression technique (along with complementary decompression techniques) that guarantees a fixed compression ratio (e.g., 2:1) may be useful without excessive loss of data quality, such as the introduction of visually perceptible artifacts into the image due to lossy compression. Some prior high-end lossy compression algorithms can achieve a fixed compression ratio without significant loss of data quality, but these algorithms involve performing complex operations on floating-point or fixed-point values ​​(e.g., filtering, multiplication, and division) and may require internal buffering of values ​​during the compression process. Therefore, these prior high-end lossy compression algorithms are generally considered unsuitable for small, low-cost, and / or low-power computing systems, such as those implemented in mobile devices (e.g., smartphones and tablets, or other devices with size, cost, and / or power constraints).

[0059] A previous low-end lossy compression technique involved compressing data values ​​by truncating them, that is, simply removing some of the least significant bits (LSBs) from the data value. To achieve a 2:1 compression ratio, half of the bits in the data value would need to be removed. While this low-end lossy compression technique can be implemented in small, low-cost, and low-power systems, it often results in unacceptable degradation of data quality. For example, if the data values ​​are pixel values ​​of an image, this low-end lossy compression technique often introduces visible banding artifacts into the image, which is generally undesirable.

[0060] This paper describes examples of lossy compression and decompression techniques that guarantee a fixed compression ratio (e.g., 2:1) without excessive loss of data quality (e.g., no significant visually perceptible artifacts introduced into the image due to lossy compression) and can be implemented in small, low-cost, and low-power computing systems. The examples described herein are easy to implement. For example, these examples can operate on image element values ​​in integer format rather than floating-point format, and can be performed by performing simple operations (e.g., addition, subtraction, and comparison operations) without performing more complex operations (which may be enormous in terms of the amount of data required to represent the values), such as multiplication or division, and without requiring internal buffering of the values ​​during the compression or decompression process. In these examples, these simple operations (e.g., addition, subtraction, and comparison operations) are "integer operations," meaning they operate on integers, such as operating on image element values ​​in integer format.

[0061] The lossy compression techniques described herein can be implemented in a compression unit implemented in dedicated hardware (e.g., using fixed function circuitry). Similarly, the lossy decompression techniques described herein can be implemented in a decompression unit implemented in dedicated hardware (e.g., using fixed function circuitry). In these examples, the compression unit and decompression unit can be smaller in physical size (e.g., silicon area) when compared to previous high-end compression and decompression units implemented in hardware. The lossy compression unit and decompression unit described herein are suitable for implementation in small, low cost processing units (e.g., GPUs or CPUs) with small silicon area and low power consumption and low latency. This is achieved without too much reduction in data quality (e.g., image quality).

[0062] Image data to be compressed can be represented as a 2D array of image element values (e.g., pixel values). If the image data includes multiple channels, then the different channels are compressed independently (although pre-processing steps for compression can be performed for color decorrelation or conversion of RGB values to YCbCr values, and corresponding post-processing steps can be performed after decompression). In the examples described herein, at least one block of image elements (e.g., a 2x2 block) within the array is compressed in a lossy manner.

[0063] Figure 2 An image data array including image data blocks is shown. In this example, the image data array 200 represents an image represented by pixel values, where the image data blocks are 2x2 blocks of pixel values. The top left block of pixel values is represented by reference numeral 202, which is composed of up to four pixel values 2040, 2041, 2042, and 2043. In other examples, the image data blocks can have different sizes and / or shapes. For example, in other examples, the image data blocks can be 4x1 blocks of image element values, or 4x4 blocks of image element values, to name just two examples.

[0064] The examples described herein relate to compressing a block of pixel values, where the pixel values represent an image. However, it will be appreciated that pixel values are merely one example of image element values that can be compressed using the techniques described herein. More generally, a block of image data can be compressed to form a block of compressed data, and the block of compressed data can be decompressed to form a block of image data, where the image data comprises a plurality of image element values. To give some examples, the image element values can be: (i) texel values representing a texture; (ii) pixel values representing an image; (iii) depth values representing a surface depth at different sampling locations within a scene; (iv) surface normal values representing a direction of a normal vector of a surface at different sampling locations within a scene; or (v) lighting values representing lighting on a surface at different sampling locations within a scene. The lighting values represent a “light map”. A light map can be considered a kind of texture, such that it can be used and processed in the same way as a texture. Pixel values and texel values are examples of colour values (where the pixel values represent an image and the texel values represent a texture). These colour values can be monochromatic, i.e. they have a single colour channel. However, in some examples, the colour values can be multi-channel values. For example, the colour values can be in RGB format, where they have a red channel (R), a green channel (G) and a blue channel (B). In other examples, the colour values can be in RGBA format, where they have a red channel (R), a green channel (G), a blue channel (B) and an alpha channel (A). In other examples, the colour values can be in YCbCr format, where the colour values have a luma channel (Y), a first chroma channel (Cb) and a second chroma channel (Cr). Multi-channel colour values can have many other formats, as is known in the art. Each channel of a multi-channel colour value comprises a value relating to that particular channel. The values of different channels of a multi-channel value can be independently compressed and decompressed. When we refer to “pixel values” in the examples described herein, we can mean the values of one channel of a multi-channel colour value.

[0065] As a brief overview of the lossy compression techniques described herein, a block of pixel values 202 can be compressed by determining a starting value (e.g. a base value) for the block 202, selecting (or “determining” or “identifying”) a level within a multi-level difference table (which can be referred to as a multi-level quantisation delta table), and for each pixel value 204 in the block 202, using some bits (e.g. 2 bits per pixel value) to select one of the entries for the selected level of the multi-level difference table. The entries in the multi-level difference table represent a difference value (i.e. an adjustment value) from the starting value. For different levels of the multi-level difference table, the size of the range of values represented by the entries in the level is different. This allows the level to be selected according to the size of the range of pixel values within the block.

[0066] Reference is now made to Figure 3a and Figure 3b Examples of lossy compression techniques are described. Figure 3aA compression unit 302 configured to perform lossy compression of a block of image data according to a multi-level difference table is shown. The compression unit 302 can be implemented as part of the compression / decompression unit 112 within the GPU 104. The compression unit 302 is configured to receive a block of image data, perform lossy compression of the block of image data to form a compressed block of data, and output the compressed block of data, e.g., for storage in memory. The compression unit 302 includes start value determination logic 304, level determination logic 306, entry selection logic 308, and compressed block formation logic 310. The start value determination logic 304, level determination logic 306, entry selection logic 308, and compressed block formation logic 310 can be implemented in dedicated hardware, e.g., in fixed function circuitry.

[0067] Figure 3b is a flowchart of a method of performing lossy compression of a block of image data 202. As described in more detail below, in step S312, pre-processing can be performed on the block of image data. This step is shown in Figure 3b with a dashed line, as this step is optional. In step S314, the block of image data 202 is received at the compression unit 302. The block of image data 202 is provided to the start value determination logic 304, the level determination logic 306, and the entry selection logic 308. As shown in Figure 2 , in this example, the block of image data 202 is a 2x2 block of pixel values 2040-2043.

[0068] In step S316, the start value determination logic 304 determines a start value for the block of pixel data 202. The start value is determined based on the pixel values 204 in the block of pixel data 202. For example, the start value can be a base value, where the base value is determined by identifying the minimum pixel value in the block of pixel values 202. Identifying the minimum value from a set of values is a simple process to perform in processing logic, and methods of identifying the minimum value from a set of values are known in the art.

[0069] The determination of the base value can also include reducing the number of bits used to represent the smallest pixel value in the block of pixel values 202. Some bits of the base value can be implicit, e.g., one or more least significant bits can be implicitly zero such that they need not be stored when storing the base value. For example, each of the pixel values 204 can be represented using 8 bits, and the base value can be represented using less than 8 bits, e.g., using 5 bits. In this way, the data representing the base value can include fewer bits (e.g., 5 bits) than any one of the pixel values 204 in the block of pixel data 202 (e.g., 8 bits). The reduction in the number of bits used to represent the base value can include identifying the smallest pixel value 204 in the block of pixel values 202, and rounding the smallest pixel value according to a rounding mode. For example, the rounding mode can be a rounding mode that rounds towards zero, and the rounding can involve truncating (or "clipping") the smallest pixel value, i.e., replacing one or more (e.g., three) least significant bits (LSBs) of the smallest pixel value with zeros such that these bits need not be stored. This is very simple to implement. In other examples, the rounding mode can be a rounding mode that rounds away from zero or a rounding mode that rounds to the nearest value, but these rounding modes can be slightly more complex to implement than simply clipping the smallest pixel value.

[0070] The level determination logic 306 receives: (i) the block of pixel data 202, and (ii) an indication of the determined starting point value from the starting point value determination logic 304. In step S318, the level determination logic 306 determines a level within the multi-level difference table for the block of pixel data 202, for example, based on the determined starting point value and one or more of the pixel values 204 in the block of pixel data 202. This step is described herein as "determining" a level within the multi-level difference table, and it will be appreciated that this can also be described as "selecting" or "identifying" a level within the multi-level difference table. Each level of the multi-level difference table comprises a plurality of entries. Each entry in the multi-level difference table represents a value that can be used to represent a difference (or "delta") between a pixel value and the starting point value. In examples, each level described herein comprises the same number of entries. As described above, for different levels of the multi-level difference table, the size of the range of values represented by the entries in the level is different. In this way, different levels are suited to representing blocks of pixel data having different distributions of pixel values within them. For example, some levels of the multi-level difference table have entries representing small ranges of values, and these levels will be useful for compressing blocks of pixel data in which the pixel values do not vary much; while some other levels of the multi-level difference table have entries representing large ranges of values, and these levels will be useful for compressing blocks of pixel data in which the pixel values do vary a lot. There is often some correlation between the pixel values within a small block, so the pixel values within a block of pixel data are often very similar to each other (for example, if all of the pixel values represent the same object in an image). The smaller levels of the multi-level difference table will be useful in these cases, and will not introduce large errors into the pixel values. However, the larger levels of the multi-level difference table are still able to compress blocks in which the pixels are less similar. An example multi-level difference table is shown in Table 1. This example is for 8-bit pixel values, so that each pixel value is in the range 0 to 255. In different examples, the multi-level difference table can be different to that shown in Table 1.

[0071] Level Entry 0 Entry 1 Entry 2 Entry 3 0 0 2 4 8 1 0 4 8 16 2 0 8 16 32 3 0 16 32 64 4 0 32 64 96 5 0 48 96 128 6 0 64 128 176 7 0 96 192 248

[0072] Table 1: Multi-level difference table

[0073] In this example, the first entry in each level of the multi-level difference table represents a zero value. This is not essential, but it can be useful in some cases as it allows zero pixel values (which can be used to represent a completely black colour, for example) to be compressed without changing their value. Thus, in these examples, using the multi-level difference table to compress the pixel values of an image does not introduce artefacts into completely black areas of the image. Furthermore, as each level has zero as its first entry, it can not be necessary to store the value of the first entry of each level in the multi-level difference table, thereby reducing the amount of memory used to store the multi-level difference table.

[0074] The multi-level difference table is predetermined. In other words, the values of the entries of the multi-level difference table are determined before the method of performing lossy compression (or lossy decompression) on the image data block begins. In some examples, the multi-level difference table is stored in a small block of dedicated memory on, for example, the compression unit 302, and the level determination logic 306 and entry selection logic 308 can perform lookups to this memory to access data from the stored multi-level difference table. In other examples, the values of the multi-level difference table can be hard-coded into the circuitry of the level determination logic 306 and entry selection logic 308. Storing the multi-level difference table in memory will allow the values of the entries in the multi-level difference table to be changed after the compression unit 302 has been manufactured, thus allowing more flexibility in the way the compression unit 302 performs lossy compression. However, hard-coding the values of the multi-level difference table into the circuitry of the level determination logic 306 and entry selection logic 308 will provide faster execution (thus reducing the latency of the compression process) and will avoid the use of memory to store the multi-level difference table (thus reducing the silicon area of the compression unit 302), but will make it difficult to change the values of the multi-level difference table after the compression unit 302 has been manufactured, thus hard-coding the values of the multi-level difference table into the circuitry of the compression unit 302 is a relatively inflexible approach.

[0075] In the example shown in Table 1, the values of the entries have low Hamming weight, i.e. they have a relatively low number of ones and a relatively high number of zeros in their binary representation when represented as binary digits. This can make it simpler to implement comparisons of these values with these digits in hardware that operates on binary digits.

[0076] Figure 4 is a flowchart showing an example of how step S318 is performed in the level determination logic 306 to determine (i.e. identify) the level within the multi-level difference table of the pixel data block 202. According to the method shown in Figure 4 According to the method shown in

[0077] In particular, in step S402, the image data block (e.g. the pixel data block 202) and the starting point value (e.g. the base value) determined by the starting point value determination logic 304 are received at the level determination logic 306. In step S404, the level determination logic 306 identifies the maximum pixel value (pix max ) in the pixel data block 202. In step S406, the maximum difference value (Diff max ) is determined by subtracting the starting point value (in this example, the base value) from the maximum pixel value. In other words, max = pix max-baseValue.

[0078] By comparing the last entry in one or more levels of a multi-level difference table with the maximum difference Diff max A comparison is made to determine the level in the multi-level difference table. Specifically, in step S408, the largest difference Diff is selected. max Compare with the largest entry in the highest level of the multi-level difference table. In the example shown in Table 1 above, the highest level is level 7, and the largest entry in level 7 represents the value 248. If the maximum difference Diff max If the value is greater than or equal to the largest entry in the maximum level of the multi-level difference table, the method proceeds to step S410, where the level is set to the maximum level (e.g., level 7). This level allows for representing very large differences between pixel values ​​204 within pixel block 202. An example of a situation where such large differences may occur within a pixel block is when one or more pixels within the block represent completely bright white areas (e.g., a value of 255 in each 8-bit color channel) and one or more pixels within the block represent completely black areas (e.g., a value of 0 in each color channel), such as when the pixels represent text, for example, black text on a white background.

[0079] If the maximum difference Diff max If the value is less than the largest entry in the maximum level of the multi-level difference table, the method proceeds from step S408 to step S412, where parameter i is set to zero. Then, in step S414, level determination logic 306 determines the maximum difference Diff. max Is it less than or equal to the largest entry in level i of the multi-level difference table? In the example shown in Table 1 above, the largest entry in level 0 represents the value 8. If Diff max If the largest entry in level i of the multi-level difference table is not less than or equal to the largest entry, the method proceeds from step S414 to step S416, where parameter i is incremented, and then the method returns to step S414 to consider the next level (e.g., level 1 in this iteration). In the example shown in Table 1 above, the largest entry in level 1 represents the value 16. This loop between steps S414 and S416 continues until the Diff is determined in step S414. max If the maximum entry in level i of the multi-level difference table is less than or equal to the maximum entry, the method proceeds to step S418.

[0080] In step S418, the maximum entry and the maximum difference Diff in level i are determined. max The difference between (D) i And determine the maximum difference Diff. max The difference (D) between the largest entry in level (i-1) and the largest entry in level (i-1)i-1 ). In step S420, the level determination logic 306 determines whether D i-1 <D i If D i-1 is less than D i , the method proceeds to step S422, in which the level is set to level (i-1). However, if D i-1 is not less than D i (e.g., if D i-1 is greater than D i ), the method proceeds to step S424, in which the level is set to level i. Thus, steps S408 to S424 are examples of ways to implement a process of selecting a level from a multi-level difference table whose maximum entry most closely represents the maximum difference Diff max .

[0081] For example, if the four pixel values 204 within the pixel data block 202 are 8-bit values representing values 52 (i.e., binary 00110100), 46 (i.e., binary 00101110), 60 (i.e., binary 00111100), and 66 (i.e., binary 01000010), then in an example the starting value, i.e., the base value, can be determined by replacing the three least significant bits of the smallest of these four values (i.e., the value 46) with zeros, so that the base value is 40 (i.e., binary value 00101000). This base value can be stored by storing only the first five bits (00101). In this example, the maximum difference Diff max will be 26, since 66 - 40 = 26. Thus, in this example, the loop of steps S414 and S416 will select i to be 2, since 26 is greater than 16 (which is the maximum entry in level 1) but less than 32 (which is the maximum entry in level 2). Thus, in this example, D i = 6 and D i-1 = 10, so the level will be set to level 2.

[0082] Returning Figure 3b , after step S318, in step S320, for each pixel value 204 in the pixel data block 202, one of the entries in the multi-level difference table at the determined level is selected, e.g., based on the pixel value 204 and the starting value.

[0083] Figure 5 is a flowchart showing an example of how step S320 is performed in the entry selection logic 308 to select an entry at the level determined for each pixel value 204 in the pixel data block 202. According to Figure 5In step S502, the entry selection logic 308 receives: (i) the block of pixel data 202, (ii) the starting value determined by the starting value determination logic 304, and (iii) an indication of the level (referred to herein as "level set ") determined by the level determination logic 306, in accordance with the method shown in FIG. 5.

[0084] In step S504, the entry selection logic 308 sets the parameter j to zero. In step S506, the entry selection logic 508 determines the difference value Diff j for pixel j. This can be done by subtracting the starting value (i.e., the base value) from the jth pixel value ("pixelValue j "). In other words, Diff j = pixelValue j - baseValue.

[0085] In step S508, the difference value Diff j for pixel j is compared to the largest entry in the determined level (i.e., level set ) of the multi-level difference table. In the example shown in Table 1, and in the example where level set is level 2, the largest entry represents the value 32. If Diff j is greater than or equal to the largest entry in the level set of the multi-level difference table, the method proceeds to step S510, in which the entry for pixel j is set to the largest entry in the level set .

[0086] If Diff j is less than the largest entry in the level set of the multi-level difference table, the method proceeds to step S512, in which the parameter k is set to zero. Then, in step S514, the entry selection logic 308 determines whether the difference value Diff j for pixel j is less than or equal to the kth entry in the determined level (i.e., level set ) of the multi-level difference table. For example, in Table 1 shown above, entry 0 in level 2 represents the value 0. If Diff j is not less than or equal to the kth entry in the level set of the multi-level difference table, the method proceeds from step S514 to step S516, in which the parameter k is incremented, and then the method returns to step S514 to consider the level setthe next entry in the multi-level difference table (e.g., entry 1 in this iteration). In the example shown in Table 1 above, entry 1 in level 2 represents the value 8. This loop of step S514 and step S516 continues until it is determined in step S514 that Diff j is less than or equal to the kth entry in level set of the multi-level difference table, then the method proceeds to step S518.

[0087] In step S518, the difference (Diff set ) between the kth entry in level j and the difference value Diff k for pixel j is determined, and the difference (Diff j ) between the difference value Diff set for pixel j and the (k-1)th entry in level k-1 is determined. In step S520, the entry selection logic 308 determines whether Diff k-1 < Diff k If Diff k-1 is less than Diff k , then the method proceeds to step S522, in which the entry for pixel j is set to the (k-1)th entry in level set . However, if Diff k-1 is not less than Diff k , then the method proceeds to step S524, in which the entry for pixel j is set to the kth entry in level set .

[0088] Thus, steps S508 through S524 are examples of ways to implement the process of selecting an entry from the determined level of the multi-level difference table that most closely represents the determined difference value Diff j for the jth pixel.

[0089] In step S526, the entry selection logic 308 determines whether (j+1) is equal to the number of pixels 204 in the pixel block 202. If (j+1) is not equal to the number of pixels 204 in the pixel data block 202, then this means that there are more pixel values in the pixel data block 202 for which an entry is to be selected. Thus, the method proceeds to step S528, in which the parameter j is incremented, and the method returns to step S506 so that the next pixel value in the pixel block can have an entry selected for it by the entry selection logic 308.

[0090] If it is determined in step S526 that (j+1) is indeed equal to the number of pixels 204 in pixel block 202, this means that an entry has been selected for each pixel value in pixel data block 202. Therefore, step S320 is completed, and the method proceeds to step S322.

[0091] Continuing with the example given above, the four pixel values ​​204 within pixel data block 202 are 8-bit values ​​representing values ​​52 (i.e., binary 00110100), 46 (i.e., binary 00101110), 60 (i.e., binary 00111100), and 66 (i.e., binary 01000010), with a base value of 40 (i.e., binary value 00101000), and the level determination logic 306 selects level 2 from a multi-level difference table for this pixel data block. This base value can be stored by storing only the five most significant bits (00101), while the three least significant bits are implicitly zero and do not need to be stored. In this example, the differences between the four pixel values ​​are 12, 6, 20, and 26. Therefore, as can be seen from Table 1 above, the selected entries for these four pixel values ​​will be entry 2 (representing value 16), entry 1 (representing value 8), entry 2 (representing value 16), and entry 3 (representing value 32), respectively.

[0092] return Figure 3b Following step S320, the method proceeds to step S322, where compression block forming logic 310 forms a compressed data block of pixel data blocks. Compression block forming logic 310 receives: (i) data representing a determined start value from start value determination logic 304, (ii) an indication of a determined level from level determination logic 306, and (iii) an indication of a selected entry for each image element value (e.g., for each pixel value 204 in pixel data block 202) from entry selection logic 308. The compressed data block formed by compression block forming logic 310 includes: (i) data representing a determined start value of pixel data block 202, (ii) an indication of a determined level of pixel data block 202, and (iii) an indication of a selected entry for each pixel value 204 in pixel data block 202.

[0093] In step S324, compressed data blocks are output from compression unit 302. These compressed data blocks can be stored, for example, in memory, such as memory 106.

[0094] Figure 6 An example of the format of compressed data block 600 is shown. Figure 6 The example shown involves compressing a pixel data block 202 comprising four pixel values ​​204, with each pixel value 204 having 8 bits. In this example, 32 bits are used to represent the uncompressed pixel data block 202.Figure 6 In the example shown, the compressed data block has 16 bits, such that it achieves a compression ratio of 2: 1. In other words, the number of bits used to represent the compressed data block 600 is half the number of bits used to represent the (uncompressed) image data block, such that the lossy compression has a compression ratio of 2: 1. This compression ratio is guaranteed. In other words, the number of bits used to represent the compressed data block 600 does not depend on the values of the pixel values 204 in the pixel data block 202. The compressed data block 600 comprises: (i) 5 bits of data representing the determined start point value 602, (ii) 3 bits representing the indication of the determined level 604, and (iii) 2 bits for each of the four pixel values to indicate the selected entry for that pixel value 6060, 6061, 6062 and 6063. It should be noted that using 3 bits to indicate the level allows up to eight different levels to be indicated in the multi-level difference table, and using 2 bits for each indication of a selected entry allows up to four entries per level. Thus, Figure 6 The format of the compressed data block 600 shown in Figure 6 is suitable (i.e. compatible) for use with the multi-level difference table shown in Table 1 above.

[0095] In other examples, different multi-level difference tables can be used, and the compressed data block can have a different format. The format of the compressed data block and the number of levels in the multi-level difference table and the number of entries in each level of the multi-level difference table can be selected together, for example, such that the number of levels (L) in the multi-level difference table and the number of bits used to indicate the level (N L ) are related, such that and such that the number of entries (E) in each level of the multi-level difference table and the number of bits used to indicate the selected entry for each pixel value (N E ) are related, such that

[0096] For example, in a different system, if a 4x4 block of 8-bit pixel values is compressed (such that the uncompressed pixel data block has 128 bits), then the compressed data block can have 8 bits for the start point value, 8 bits for indicating the level, and 3 bits for each of the 16 pixel values to indicate the selected entry. Thus, the compressed data block would have 64 bits, and the compression ratio would be 2: 1. In this example, the multi-level difference table can have up to 256 levels (because 2 8 = 256), and each level can have 8 entries (because 2 3 = 8).

[0097] In another different example, the target compression ratio can be 4:3, and a 2x2 block of 8-bit pixel values can be compressed so that the uncompressed pixel data block would have 32 bits and the compressed data block would have 24 bits. In this example, the compressed data block can have 8 bits for the starting point value, 4 bits to indicate the level, and 3 bits for each of the 4 pixel values to indicate the selected entry. In this example, the multi-level difference table can have up to 16 levels (because 2 4 = 16), and each level can have 8 entries (because 2 3 = 8).

[0098] It should be noted that in both of the alternative examples given above, the starting point value is represented with the same number of bits as one of the original pixel values, so in these examples it does not need to be rounded or "clipped" or "truncated".

[0099] The examples described above involve a compression unit 302 (e.g., configured in dedicated hardware (e.g., fixed-function circuitry)) that performs lossy compression to compress an image data block to form a compressed data block. Now continuing with a description of a decompression unit (e.g., configured in dedicated hardware (e.g., fixed-function circuitry)) that performs lossy decompression to decompress a compressed data block to form an image data block. The decompression unit performs a decompression technique that is complementary to the compression technique used to compress the data, so that the decompressed image data block is similar to the original image data block before compression (although the decompressed image data block is not necessarily exactly the same as the original image data block before compression, because some data can be lost during lossy compression and decompression). As a brief overview of the decompression process, a compressed data block (e.g., for a 2x2 pixel block) is read, so that the data representing the starting point value (e.g., base value), the indication of the level in the multi-level difference table, and the indication of the selected entry for each image element value (e.g., pixel value) are read. Then, the decompressed pixel values can be determined by adding the base value and the values represented by the corresponding entries from the multi-level difference table.

[0100] One example of a decompression technique is now described with reference to Figure 7 and Figure 8 Figure 7 ​A decompression unit 702 configured to perform lossy decompression of a compressed data block according to a multi-level difference table is shown. The decompression unit 702 can be implemented as part of the compression / decompression unit 112 within the GPU 104. The decompression unit 702 is configured to receive a compressed data block, perform decompression of the compressed data block to form an (decompressed) image data block, and output the image data block, e.g., for further processing in the GPU 104. The decompression unit 702 includes a starting point value determination logic 704, a level identification logic 706, and an image element value determination logic 708. The starting point value determination logic 704, the level identification logic 706, and the image element value determination logic 708 can be implemented in dedicated hardware, e.g., in fixed function circuitry.

[0101] Figure 8 is a flowchart of a method of decompressing a compressed data block using the decompression unit 702. In step S802, a compressed data block is received at the decompression unit 702. The compressed data block is provided to the starting point value determination logic 704, the level identification logic 706, and the image element value determination logic 708. The compressed data block can have been compressed using one of the example compression techniques described above. In particular, in the examples described herein, the compressed data block 600 has the format shown in FIG. 6A. Figure 6

[0102] In step S804, the starting point value determination logic 704 uses data representing the starting point value from the compressed data block to determine the starting point value for the image data block. For example, this can involve appending one or more bits (e.g., zeros) to the data representing the starting point value 602 in the compressed data block. For example, if the (uncompressed) pixel values have 8 bits, and if there are 5 bits 602 representing the starting point value in the compressed data block 600, then step S804 can include appending three zeros to the least significant end of the 5 bits 602 representing the starting point value in the compressed data block 600. As described above, in some other examples, the data representing the starting point value in the compressed data block can have the same number of bits as one of the image element values, in which case step S804 would simply involve reading those bits from the compressed data block (i.e., no additional bits need to be appended to the data representing the starting point value in these other examples).

[0103] In step S806, the level identification logic 706 uses the indication 604 of the level from the compressed data block 600 to identify the level within the multi-level difference table for the image data block. For example, the indication of the level 604 includes three bits, which can act as an index indicating one of eight levels within the multi-level difference table, e.g., as shown in Table 1 above. As described above, for different levels of the multi-level difference table, the size of the range of values represented by the entries in the level is different.

[0104] ​The image element value determination logic 708 receives an indication of the level identified by the level identification logic 706 and the starting value determined by the starting value determination logic 704. In step S808, the image element value determination logic 708 uses the respective entry indication 606 from the compressed data block 600 to identify one of the entries in the multi-level delta value table at the identified level for each pixel value in the pixel data block.

[0105] In step S810, the image element value determination logic 710 determines each of the pixel values using the starting value determined for the pixel data block and the identified entry in the multi-level delta value table at the level identified for the pixel value. For example, step S810 can include summing the starting value determined for the pixel data block and the value represented by the identified entry in the multi-level delta value table at the level identified for the pixel value. If the result of the sum is greater than the maximum possible pixel value, then the pixel value is set to that maximum possible pixel value. For example, if the pixel value has 8 bits, then 255 (represented in binary as 11111111) is the maximum possible pixel value, so if the result of the sum used to determine the pixel value is greater than 255, then the pixel value is set to 255. If the pixel value has a different number of bits, then the maximum possible pixel value will be different.

[0106] Similar to that mentioned above with reference to the compression unit 302, the multi-level delta value table can be stored in a memory within the decompression unit 702, where the level identification logic 706 and the image element value determination logic 708 can perform lookups to the memory to access the multi-level delta value table; or the multi-level delta value table can be hard-coded into the circuitry of the level identification logic 706 and the image element value determination logic 708.

[0107] In step S812, the pixel data block is output (decompressed) from the decompression unit 702, e.g., for further processing in the GPU 104. As described in more detail below, in step S814, post-processing can be performed on the image data block. This step is shown in Figure 8 with a dashed line, as this step is optional.

[0108] The decompression process is very simple to implement and can, for example, include performing addition operations (or subtraction operations in some examples), but can not involve performing complex operations during decompression, such as multiplication or division or any buffering of internal values. As noted above, the pixel values can be in integer format (rather than a more complex format, such as floating point format).

[0109] In the above examples, the starting point value is a base value (i.e., represents a minimum pixel value within the pixel data block), and the difference values represented by the entries in the multi-level difference value table represent additions to be made to the base value, thereby representing pixel values within the pixel data block. However, in other examples, the starting point value can be a maximum value (i.e., represents a maximum pixel value within the pixel data block), and the difference values represented by the entries in the multi-level difference value table can represent subtractions to be made from the maximum value, thereby representing pixel values within the pixel data block. In other examples, the starting point value can be some intermediate value (i.e., represents a midpoint between the maximum pixel value and the minimum pixel value within the pixel data block), and the difference values represented by the entries in the multi-level difference value table can be in signed format, such that they can represent additions or subtractions to be made relative to the intermediate value, thereby representing pixel values within the pixel data block.

[0110] As noted above, some examples are described in detail herein with reference to pixel data blocks that include pixel values, but more generally, the decompression process can be performed on image data blocks that include image element values, which, by way of a few examples, can be pixel values, texel values, depth values, surface normal values, or illumination values.

[0111] As noted above, in some examples, there can be some pre-processing (in step S312) and some post-processing (in step S814) performed on the image data blocks. For example, the image data block can relate to one channel of a multi-channel image data block, where different channels of the multi-channel image data can be independently compressed and decompressed. For example, the multi-channel image data block can be color data of a color value block, including: (i) a first image data block related to a red channel of the color value block, (ii) a second image data block related to a green channel of the color value block, and (iii) a third image data block related to a blue channel of the color value block. Prior to independently compressing the three image data blocks, color decorrelation can be performed on the color values in step S312.

[0112] Color value errors can occur in images that have been compressed and then decompressed using lossy compression techniques. Errors introduced by lossy compression can further pull apart color channel values. Moreover, in situations where the red, green, and blue channels are highly correlated (e.g., to represent a shade of gray), errors that vary between different color channels can be more easily perceived by a viewer. For example, lossy compression can introduce noticeable colors into an image region that should be gray. Applying color decorrelation to the channels prior to (independent) lossy compression of each of the individual channels can help reduce color distortions introduced into the image (e.g., into a gray region of the image).

[0113] When the multi-channel image data is in RGB format, a simple color decorrelation technique can be used such that each color value includes a red value (R), a green value (G), and a blue value (B). The color decorrelation process (e.g., step S312) can include:

[0114] computing image element values (R’) for the first image data block according to the equation R’ = R - G;

[0115] determining image element values (G’) for the second image data block according to the equation G’ = G; and

[0116] computing image element values (B’) for the third image data block according to the equation B’ = B - G.

[0117] The first, second, and third image data blocks (having values R’, G’, and B’) can then be independently compressed as described above.

[0118] When the data is decompressed, as described above, after the compressed data blocks associated with the three image data blocks have been independently decompressed, a post-processing step S814 can color recorrelate the color values. For example, the color recorrelation process (e.g., step S814) can include:

[0119] computing red values (R) using the image element values (R’) that have been decompressed from the first compressed data block and using the image element values (G’) that have been decompressed from the second compressed data block according to the equation R = R’ + G’;

[0120] determining green values (G) using the image element values (G’) that have been decompressed from the second compressed data block according to the equation G = G’; and

[0121] computing blue values (B) using the image element values (B’) that have been decompressed from the third compressed data block and using the image element values (G’) that have been decompressed from the second compressed data block according to the equation B = B’ + G’.

[0122] In other examples, these pre-processing and post-processing steps can involve converting the multi-channel values into a different color space, rather than performing color decorrelation and color recorrelation in the pre-processing and post-processing steps (steps S312 and S814). For example, if the multi-channel image data is color data in RGB format, such that each color value includes a red value (R), a green value (G), and a blue value (B), then step S312 can include converting the color data to a luminance-chrominance format, e.g., that includes: (i) a first image data block related to a luminance channel (Y) of the block of color values, (ii) a second image data block related to a first chrominance channel (Cb) of the block of color values, and (iii) a third image data block related to a second chrominance channel (Cr) of the block of color values. After the color data has been converted to a luminance-chrominance format, the three image data blocks can be independently compressed as described above. Converting the color data to a YCbCr color space prior to lossy compression can help reduce color distortion in the image, e.g., in the gray regions of the image.

[0123] Methods for converting from RGB format to YCbCr format are known in the art and can be implemented according to the following equations:

[0124] Y = 0 + 0.299R + 0.587G + 0.114B

[0125] Cb = 128 - 0.168736R - 0.331264G + 0.5B

[0126] Cr = 128 + 0.5R - 0.418688G - 0.081312B

[0127] When the data is decompressed, as described above, after the compressed data blocks related to the three image data blocks have been independently decompressed, the post-processing step S814 can convert the color data from YCbCr format back to RGB format. For example, the three compressed data blocks are independently decompressed to determine multi-channel color data in luminance-chrominance format, which includes: (i) a first image data block related to a luminance channel (Y), (ii) a second image data block related to a first chrominance channel (Cb), and (iii) a third image data block related to a second chrominance channel (Cr), and step S814 can include converting the color data to RGB format, such that each color value includes a red value (R), a green value (G), and a blue value (B).

[0128] Methods for converting from YCbCr format to RGB format are known in the art and can be implemented according to the following equations:

[0129] R = Y + 1.402*(Cr - 128)

[0130] G = Y - 0.344136 * (Cb - 128) - 0.714136 * (Cr - 128)

[0131] B = Y + 1.772 * (Cb - 128)

[0132] In the above examples, lossy compression techniques are implemented alone to perform lossy compression on image data blocks, guaranteeing a particular target compression ratio (e.g., 2: 1). However, in some cases, lossless compression techniques can already meet the target compression ratio for at least some of the image data blocks, and lossless compression techniques would not introduce errors into the image data. Thus, in some cases, it can be useful to perform lossless compression on image data blocks if lossless compression would meet the target compression ratio, but if lossless compression of the image data would not meet the target compression ratio, then a lossy compression technique (e.g., one of the lossy compression techniques described herein) can be used to compress the image data blocks. This can be described as using lossy compression as a “plan B” for lossless compression. This achieves a guaranteed compression ratio, and reduces the errors introduced by compression compared to using only lossy compression. However, in order to implement such a “plan B” compression technique, the compression unit needs to be able to perform both lossless and lossy compression, so the physical size (e.g., silicon area) of the compression unit can be larger than examples that implement only lossy compression. However, such an increase in physical size can be small, and in some cases, this can be considered acceptable in order to achieve a reduction in errors by using such a plan B compression technique compared to using only lossy compression.

[0133] Figure 9 A compression unit 902 is shown, which includes a first compression unit 904 configured to perform lossless compression on image data blocks, a second compression unit (in this example, the lossy compression unit 302 described above) configured to perform lossy compression on image data blocks, and compression technique determination logic 906. The compression units 904 and 302 and the compression technique determination logic 906 can be implemented in dedicated hardware, e.g., fixed function circuitry.

[0134] Figure 10 is a flowchart of a method of compressing image data blocks using the compression unit 902. In step S 1002, the compression unit 902 receives an image data block to be compressed.

[0135] In step S1004, the compression technique determination logic 906 determines whether lossless compression of the image data block will meet the target compression ratio of the image data block. For example, the compression technique determination logic 906 can determine whether lossless compression of the image data block will meet the target compression ratio by predicting the amount of compressed data that will be obtained by performing lossless compression on the image data block, and then determining whether the predicted amount of compressed data meets the target compression ratio. In this example, the prediction of the amount of compressed data that will be obtained by performing lossless compression on the image data block can be performed without performing lossless compression on the image data block. For example, some operations involved in performing lossless compression can be performed or no operations can be performed in order to predict the amount of compressed data that will be obtained by performing lossless compression on the image data block.

[0136] If it is determined in step S1004 that lossless compression of the image data block will not meet the target compression ratio, the method proceeds to step S1006, where the lossy compression unit 302 performs lossy compression on the image data block to form a compressed data block. For example, the lossy compression performed by the lossy compression unit 302 can be as described in the example given above. The compression ratio of the lossy compression performed by the lossy compression unit 302 is guaranteed to meet the target compression ratio of the image data block.

[0137] In step S1008, the lossy compression unit 302 stores an indication in the header associated with the compressed data block to indicate that the block has been compressed using a lossy compression technique. In step S1010, the lossy compressed data block is output from the compression unit 902, for example, to be stored in memory.

[0138] If it is determined in step S1004 that lossless compression of the image data block will meet the target compression ratio, the method proceeds to step S1012, where the lossless compression unit 904 performs lossless compression on the image data block to form a compressed data block. Methods for performing lossless compression on image data blocks are known in the art.

[0139] In step S1014, the lossless compression unit 904 stores an indication in the header associated with the compressed data block to indicate that the block has been compressed using lossless compression technology. In step S1016, the lossless compressed data block is output from the compression unit 902, for example, to be stored in memory.

[0140] In other examples, the steps to determine whether lossless compression of an image data block will satisfy a target compression ratio for the image data block may include: performing lossless compression on the image data block, and determining whether the amount of compressed data obtained by performing lossless compression on the image data block satisfies the target compression ratio. This may be simpler than trying to predict the amount of data that will be produced by lossless compression without actually performing lossless compression, but it may involve performing more operations than necessary, potentially increasing power consumption and latency.

[0141] In some examples, the image data block is one of a plurality of image data blocks representing an image, and there is a total image target compression ratio relating to the whole image. Since the compression ratio achieved by lossless compression will depend on the image data being compressed, some of the image data blocks can be losslessly compressed with a compression ratio that exceeds the target compression ratio for that particular image data block. This can result in excess data that can be used to represent other compressed data blocks relating to the same image. Therefore, the target compression ratio for an image data block can be modified (e.g. reduced) in accordance with the amount of compressed data that has been formed for other image data blocks relating to the same image, so as to meet the total image target compression ratio. For example, if a previous image data block relating to an image has been losslessly compressed, achieving a compression ratio that is greater than the target compression ratio for the block, then the target compression ratio for a subsequent image data block relating to the same image to be compressed can be reduced, whilst still meeting the total image target compression ratio. This can allow a greater number of image data blocks for that image to be losslessly compressed (and therefore a lower number of image data blocks for that image to be lossily compressed), and so can reduce the number of errors introduced into the image as a result of the lossy compression process. In other words, when an image data block relating to an image is losslessly compressed with a compression ratio that is greater than the target compression ratio for the image data block, by allowing the target compression ratio for another image data block relating to the same image to be modified (e.g. reduced), the reduction in image quality as a result of the lossy compression can be mitigated.

[0142] Figure 11 A decompression unit 1102 is shown, which comprises a first decompression unit 1104 configured to perform lossless decompression on compressed data blocks, a second decompression unit (in this example the lossy decompression unit 702 described above) configured to perform lossy decompression on compressed data blocks, and decompression technique determination logic 1106. The decompression units 1104 and 702 and the decompression technique determination logic 1106 can be implemented in dedicated hardware, e.g. fixed function circuitry.

[0143] Figure 12 is a flowchart of a method of decompressing a compressed data block using the decompression unit 1102. In step S1202, the decompression unit 1102 receives a compressed data block to be decompressed. The compressed data block has been compressed using the compression unit 902 described above.

[0144] In step S1204, the decompression technique determination logic 1106 reads an indication in the header associated with the compressed data block that indicates whether the compressed data block was compressed with a lossless compression technique or a lossy compression technique. In step S1206, the decompression technique determination logic 1106 uses the indication read from the header associated with the compressed data block to determine whether the compressed data block was compressed with a lossless compression technique or a lossy compression technique.

[0145] If in step S1206 it is determined that the compressed data block was compressed with a lossless compression technique, then the method proceeds to step S1208 in which the lossless decompression unit 1104 performs a lossless decompression technique on the compressed data block, thereby decompressing the compressed data block. The decompression technique used by the lossless decompression unit 1104 is complementary to the lossless compression technique used by the lossless compression unit 904, such that the lossless decompression unit 1104 can correctly decompress data that has been compressed by the compression unit 904. Methods for performing lossless decompression are known in the art. After step S1208, the method proceeds to step S1212.

[0146] If in step S1206 it is determined that the compressed data block was compressed with a lossy compression technique, then the method proceeds to step S1210 in which the lossy decompression unit 702 performs a lossy decompression technique on the compressed data block, thereby decompressing the compressed data block. The lossy decompression can be performed as described in the example given above.

[0147] After step S1210, the method proceeds to step S1212. In step S1212, the decompressed image data block is output from the decompression unit 1102, for example for further processing in the GPU 104.

[0148] In this "strain plan" system, when lossless compression meets the target compression ratio, the image data block is compressed using lossless compression, and if lossless compression does not meet the target compression ratio, the image data block is compressed using lossy compression (thereby guaranteeing that the compression ratio is achieved). When the image comprises a plurality of image data blocks, some of the image data blocks in the image can be losslessly compressed, while some other image data blocks in the image can be lossily compressed. The size of the image data blocks can be any suitable size, for example 2x2 image data blocks as described above or image data blocks of some other size and / or shape.

[0149] The compression and decompression units are described herein as comprising a plurality of functional blocks. This is merely illustrative and is not intended to define a strict division between the different logical elements of such entities. Each functional block can be provided in any suitable manner. It will be appreciated that intermediate values formed by the compression or decompression units as described herein need not be physically generated by the compression or decompression units at any point in time, and can merely represent logical values that conveniently describe the processing performed by the compression or decompression units between their inputs and outputs.

[0150] The compression and decompression units as described herein can be included in hardware on an integrated circuit. The compression and decompression units described herein can be configured to perform any of the methods described herein. In general, any of the functions, methods, techniques, or means described above can be implemented in software, firmware, hardware (e.g., fixed logic circuitry), or any combination thereof. The terms "module," "functionality," "component," "element," "unit," "block," and "logic" can be used generically herein to represent software, firmware, hardware, or any combination thereof. In the case of a software implementation, the module, functionality, component, element, unit, block, or logic represents program code that performs specified tasks when executed on a processor. The algorithms and methods described herein can be executed by one or more processors executing code, the code causing the processor(s) to execute the algorithms / methods. Examples of computer-readable storage media include random access memory (RAM), read only memory (ROM), optical disc drive, flash drive, hard drive, and other storage devices that can use magnetic, optical, and other technologies to store instructions or other data and that can be accessed by a machine.

[0151] The terms computer program code and computer readable instructions as used herein refer to any kind of executable code, including code expressed in machine language, interpreted language, or scripting language, for execution by a processor. Executable code includes binary code, machine code, byte code, code defining integrated circuits (such as a hardware description language or netlist), and code expressed in a programming language such as C, Java, or OpenCL. Executable code can be, for example, any kind of software, firmware, script, module, or library that, when executed, processed, interpreted, compiled, run, in a virtual machine or other software environment, causes a processor of the computer system supporting the executable code to perform the tasks specified by the code.

[0152] A processor, computer, or computer system can be any kind of device, machine, or special-purpose circuit, or collection or part thereof, having processing capability to that instructions can be executed. A processor can be any kind of general- or special-purpose processor, such as a CPU, GPU, system-on-a-chip, state machine, media processor, application-specific integrated circuit (ASIC), programmable logic array, field-programmable gate array (FPGA), etc. A computer or computer system can include one or more processors.

[0153] The present application is also intended to encompass software that defines the configuration of the hardware used for the apparatus described herein, such as a hardware description language (HDL) software, which is used to design integrated circuits or to configure programmable chips to perform desired functions. That is, a computer readable storage medium can be provided having computer readable program code embodied therein that, when processed (i.e., executed) in an integrated circuit manufacturing system, configures the system to manufacture a compression unit and / or decompression unit configured to perform any of the methods described herein, or to manufacture a compression unit and / or decompression unit comprising any of the apparatus described herein. The integrated circuit definition data set can be, for example, an integrated circuit description.

[0154] Thus, a method of manufacturing a compression unit and / or decompression unit as described herein in an integrated circuit manufacturing system can be provided. Furthermore, an integrated circuit definition data set can be provided that, when processed in an integrated circuit manufacturing system, causes the method of manufacturing a compression unit and / or decompression unit to be performed.

[0155] The integrated circuit definition data set can be in the form of computer code, such as a netlist, code for configuring a programmable chip, as a hardware description language defining hardware suitable for manufacture at any level of integration, including as register transfer level (RTL) code, as a high-level circuit representation (such as Verilog or VHDL), and as a low-level circuit representation (such as OASIS (RTM) and GDSII). A higher-level representation of the hardware logically defining the hardware suitable for manufacture in an integrated circuit, such as RTL, can be processed on a computer system configured for generating a manufacturing definition of the integrated circuit in the context of a software environment including definitions of circuit elements and rules for combining those elements to generate a manufacturing definition of the integrated circuit defined by the representation. As is typical for software executed at a computer system to define a machine, one or more intermediate user steps (e.g., providing commands, variables, etc.) can be required to configure the computer system to generate the manufacturing definition of the integrated circuit to execute the code defining the integrated circuit to generate the manufacturing definition of the integrated circuit.

[0156] Reference will now be made toFigure 13 Examples of processing an integrated circuit definition data set at an integrated circuit manufacturing system in order to configure the system to manufacture a compression unit and / or a decompression unit are described.

[0157] Figure 13 An example of an integrated circuit (IC) manufacturing system 1302 configured to manufacture a compression unit and / or a decompression unit as described in any of the examples herein is shown. In particular, the IC manufacturing system 1302 comprises a layout processing system 1304 and an integrated circuit generation system 1306. The IC manufacturing system 1302 is configured to receive an IC definition data set (e.g. defining a compression unit and / or a decompression unit as described in any of the examples herein), process the IC definition data set, and generate an IC (e.g. containing a compression unit and / or a decompression unit as described in any of the examples herein) from the IC definition data set. The processing of the IC definition data set configures the IC manufacturing system 1302 to manufacture an integrated circuit containing a compression unit and / or a decompression unit as described in any of the examples herein.

[0158] The layout processing system 1304 is configured to receive and process the IC definition data set to determine a circuit layout. Methods of determining a circuit layout from an IC definition data set are known in the art and can involve, for example, synthesizing RTL code to determine a gate level representation of the circuit to be generated, e.g. in terms of logic components (e.g. NAND, NOR, AND, OR, MUX and FLIP-FLOP components). By determining the position information of the logic components, a circuit layout can be determined from the gate level representation of the circuit. This can be done automatically or with user involvement in order to optimize the circuit layout. When the layout processing system 1304 has determined the circuit layout, it can output a circuit layout definition to the IC generation system 1306. The circuit layout definition can be, for example, a circuit layout description.

[0159] The IC generation system 1306 generates an IC from the circuit layout definition as is known in the art. For example, the IC generation system 1306 can implement a semiconductor device manufacturing process to generate an IC, which can involve a multi-step sequence of photolithographic and chemical processing steps during which an electronic circuit is gradually formed on a wafer made of semiconductor material. The circuit layout definition can be in the form of a mask which can be used in a photolithographic process to generate an IC according to the circuit definition. Alternatively, the circuit layout definition provided to the IC generation system 1306 can be in the form of computer readable code which can be used by the IC generation system 1306 to form a suitable mask for generating an IC.

[0160] The different processes performed by the IC fabrication system 1302 can all be performed at one location, e.g., by one party. Alternatively, the IC fabrication system 1302 can be a distributed system, such that some processes can be performed at different locations, and can be performed by different parties. For example, some of the following stages can be performed at different locations and / or by different parties: (i) synthesis of RTL code representing the IC definition data set, to form a gate level representation of the circuit to be generated; (ii) generation of a circuit layout based on the gate level representation; (iii) formation of a mask from the circuit layout; and (iv) fabrication of the integrated circuit using the mask.

[0161] In other examples, processing an integrated circuit definition data set at an integrated circuit fabrication system can configure the system to fabricate a compression unit and / or a decompression unit, without processing the IC definition data set to determine a circuit layout. For example, the integrated circuit definition data set can define a configuration of a reconfigurable processor, e.g., an FPGA, and processing of the data set can configure the IC fabrication system to generate the reconfigurable processor with the defined configuration, e.g., by loading configuration data to the FPGA.

[0162] In some embodiments, when processed in an integrated circuit fabrication system, an integrated circuit fabrication definition data set can cause the integrated circuit fabrication system to generate an apparatus as described herein. For example, configuration of the integrated circuit fabrication system by an integrated circuit fabrication definition data set in the manner described above with respect to Figure 13 Configuration of the integrated circuit fabrication system by an integrated circuit fabrication definition data set in the manner described above with respect to

[0163] In some examples, an integrated circuit definition data set can include software that is run on hardware defined at the data set, or in combination with hardware defined at the data set. In Figure 13 In the example shown, the IC generation system can be further configured by the integrated circuit definition data set to load firmware onto an integrated circuit when fabricating the integrated circuit, in accordance with program code defined at the integrated circuit definition data set, or otherwise provide program code to the integrated circuit for use with the integrated circuit.

[0164] Compared to known implementations, the implementation of the concepts set forth in this application in apparatuses, devices, modules and / or systems (as well as in the methods implemented herein) can result in performance improvements. Performance improvements can include one or more of improved computational performance, reduced latency, increased throughput, and / or reduced power consumption. During fabrication of such apparatuses, devices, modules and systems (e.g., in integrated circuits), trade-offs can be made between performance improvements and physical implementation, improving the fabrication process. For example, trade-offs can be made between performance improvements and layout area, matching the performance of known implementations but using less silicon. For example, this can be done by reusing functional blocks in serial fashion or sharing functional blocks among elements of the apparatuses, devices, modules and / or systems. Conversely, the concepts set forth in this application that result in improvements in the physical implementation of apparatuses, devices, modules and systems, such as reduced silicon area, can be traded off for performance improvements. For example, this can be done by fabricating multiple instances of a module within a predefined area budget.

[0165] Applicant hereby expressly disclaims any right, title and / or interest in any of the applications, disclosures, ideas or contributions disclosed herein that are not their own. The applicant makes no warranty that any applications, disclosures, ideas or contributions disclosed herein that are not their own are In light of the forgoing description, those skilled in the art will appreciate that various modifications can be made to the application without departing from the scope thereof.

Claims

1. A computer-implemented method for decompressing multiple compressed data blocks based on a multi-level difference table, wherein, The compressed data block represents a multi-channel image data block and is associated with a corresponding channel of the multi-channel image data, wherein each image data block includes multiple image element values, and wherein each level of the multi-level difference table includes multiple entries, and the method includes decompressing the image data block independently for each of the different channels of the multi-channel image data in the following manner: The starting value of the image data block is determined using data representing the starting value from the compressed data block; The level of the image data block within the multi-level difference table is identified using the indication from the level of the compressed data block; and For each image element value in the image data block: The corresponding entry indication from the compressed data block is used to identify an entry at the identified level within the multi-level difference table; and The image element value is determined using: (i) the starting point value determined for the image data block, and (ii) the identified entry at the identified level for the image element value in the multi-level difference table.

2. The method according to claim 1, wherein, For different levels of the multi-level difference table, the size of the value range represented by the entries in the level is different.

3. The method according to claim 1 or 2, wherein, The determination of image element values ​​includes summing the starting point value determined for the image data block and the value represented by the identified entry at the identified level for the image element value in the multi-level difference table.

4. The method of claim 3, further comprising: If the sum is greater than the maximum possible image element value, then the image element value is set to the maximum possible image element value.

5. The method according to claim 1 or 2, wherein, The data representing the determined starting point value in the compressed data block has fewer bits than any of the determined image element values ​​in the image data block.

6. The method according to claim 1 or 2, wherein, The first entry in each level of the multi-level difference table represents the zero value.

7. The method according to claim 1 or 2, wherein, Each of the image element values ​​has 8 bits, wherein the image data block comprises four image element values, such that the image data block has 32 bits, and wherein the compressed data block has 16 bits, including (i) 5 bits representing the determined starting point value, (ii) 3 bits for indicating the level, and (iii) 2 bits for indicating the corresponding entry for each of the four image element values.

8. The method according to claim 1 or 2, wherein, The compressed data block is decompressed by performing at least one operation, including addition or subtraction, but the method of decompressing the compressed data block does not involve performing any multiplication or division operations.

9. The method according to claim 8, wherein, The image element values ​​are in integer format, and the at least one operation is performed on the image element values ​​in the integer format.

10. The method according to claim 1 or 2, wherein, The multi-channel image data block is color data of a color value block, including: (i) a first image data block related to the red channel of the color value block, (ii) a second image data block related to the green channel of the color value block, and (iii) a third image data block related to the blue channel of the color value block, wherein color re-correlation is performed on the color values ​​after independently decompressing the first compressed data block, the second compressed data block, and the third compressed data block respectively related to the first image data block, the second image data block, and the third image data block.

11. The method according to claim 10, wherein, The multi-channel image data is RGB color data, such that each color value includes a red value (R), a green value (G), and a blue value (B). The color recorrelation process includes calculating the red value (R) using the image element value (R') that has been decompressed from the first compressed data block and the image element value (G') that has been decompressed from the second compressed data block, according to the equation R = R' + G'. The color recorrelation includes determining the green value (G) using the image element value (G') that has been decompressed from the second compressed data block, according to the equation G = G'. The color recorrelation includes calculating the blue value (B) using the image element value (B') that has been decompressed from the third compressed data block and the image element value (G') that has been decompressed from the second compressed data block, according to the equation B = B' + G'.

12. The method according to claim 1 or 2, wherein, The method involves independently decompressing three compressed data blocks to determine multichannel color data in a luminance-chrominance format, the luminance-chrominance format comprising: (i) a first image data block associated with the luminance channel (Y), (ii) a second image data block associated with the first chrominance channel (Cb), and (iii) a third image data block associated with the second chrominance channel (Cr), wherein the method includes converting the color data into an RGB format such that each color value includes a red value (R), a green value (G), and a blue value (B).

13. The method according to claim 1 or 2, further comprising outputting the image data block for further processing.

14. A method for decompressing compressed data blocks, comprising: Read the indication in the header associated with the compressed data block, which indicates whether the compressed data block is compressed using lossless compression or lossy compression. as well as If the instruction indicates that the compressed data block is compressed using lossless compression technology, then lossless decompression technology is performed on the compressed data block to decompress it. as well as If the instruction indicates that the compressed data block is compressed using a lossy compression technique, then the method according to claim 1 or 2 is performed to decompress the compressed data block.

15. A decompression unit configured to decompress a plurality of compressed data blocks according to a multi-level difference table, wherein, The compressed data block represents a multi-channel image data block and is associated with a corresponding channel of the multi-channel image data. Each image data block includes multiple image element values, and each level of the multi-level difference table includes multiple entries. The decompression unit is configured to decompress the image data block independently for each of the different channels of the multi-channel image data in the following manner: The starting value of the image data block is determined at the starting value determination logic using data representing the starting value from the compressed data block; The level of the image data block within the multi-level difference table is identified at the level identification logic using an indication of the level from the compressed data block; and For each image element value in the image data block, at the image element value determination logic: Use the corresponding entry indication from the compressed data block to identify one entry at the identified level within the multi-level difference table; and The image element value is determined using: (i) the starting point value determined for the image data block, and (ii) the identified entry at the identified level for the image element value in the multi-level difference table.

16. The decompression unit according to claim 15, wherein, The image element value determination logic is configured to determine the image element value of the image data block by summing the starting point value determined for the image data block and the value represented by the identified entry at the identified level for the image element value in the multi-level difference table.

17. The decompression unit according to claim 15 or 16, wherein, The starting point value determination logic, the level recognition logic, and the image element value determination logic are configured in dedicated hardware.

18. A decompression unit configured to decompress compressed image data blocks, the decompression unit comprising: A first decompression unit is configured to perform lossless decompression on compressed image data blocks; A second decompression unit, configured to perform lossy decompression on image data blocks, wherein the second decompression unit is implemented by the decompression unit according to claim 15 or 16; and The decompression technology determination logic is configured to read an indication in a header associated with the compressed data block, indicating whether the compressed data block was compressed using a lossless or lossy compression technique. The decompression technology determination logic is configured such that, if the indication indicates that the compressed data block is compressed using lossless compression technology, the first decompression unit performs lossless decompression on the compressed data block, thereby decompressing the compressed data block; and The decompression technology determination logic is configured such that if the indication indicates that the compressed data block is compressed using a lossy compression technology, the second decompression unit performs lossy decompression on the compressed data block, thereby decompressing the compressed data block.

19. A method for manufacturing a decompression unit according to any one of claims 15 to 18 using an integrated circuit manufacturing system, the method comprising: The computer-readable description of the decompression unit is processed using a layout processing system to generate a circuit layout description of an integrated circuit containing the decompression unit. as well as The decompression unit is manufactured using an integrated circuit manufacturing system according to the circuit layout description.

20. A computer-readable storage medium storing computer-readable code configured to cause the method according to any one of claims 1 to 14 to be performed when the code is run by a processor.

21. A computer-readable storage medium storing an integrated circuit definition dataset, wherein when the integrated circuit definition dataset is processed in an integrated circuit manufacturing system, the integrated circuit manufacturing system is configured to manufacture a decompression unit according to any one of claims 15 to 18.

Citation Information

Patent Citations

  • Image compression device, compression method, program, and image decompression device, decompression method and program

    CN101444103A

  • Pixel block compression apparatus in image processing system

    CN1246246A