Source: http://www.google.com/patents/US5956431?dq=5,371,548
Timestamp: 2017-06-27 00:51:58
Document Index: 498722489

Matched Legal Cases: ['art 402', 'art 418', 'art 426', 'arts 448', 'arts 456', 'arts 600', 'arts 740']

Patent US5956431 - System and method for fixed-rate block-based image compression with inferred ... - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inPatentsAn image processing system includes an image encoder system and a image decoder system that are coupled together. The image encoder system includes a block decomposer and a block encoder that are coupled together. The block encoder includes a color quantizer and a bitmap construction module. The block...http://www.google.com/patents/US5956431?utm_source=gb-gplus-sharePatent US5956431 - System and method for fixed-rate block-based image compression with inferred pixel valuesAdvanced Patent SearchTry the new Google Patents, with machine-classified Google Scholar results, and Japanese and South Korean patents.Publication numberUS5956431 APublication typeGrantApplication numberUS 08/942,860Publication dateSep 21, 1999Filing dateOct 2, 1997Priority dateOct 2, 1997Fee statusPaidAlso published asCA2305572A1, CA2305572C, DE69841328D1, EP1034505A1, EP1034505A4, EP1034505B1, WO1999018537A1Publication number08942860, 942860, US 5956431 A, US 5956431A, US-A-5956431, US5956431 A, US5956431AInventorsKonstantine I. Iourcha, Krishna S. Nayak, Zhou HongOriginal AssigneeS3 IncorporatedExport CitationBiBTeX, EndNote, RefManPatent Citations (2), Non-Patent Citations (6), Referenced by (152), Classifications (18), Legal Events (7) External Links: USPTO, USPTO Assignment, EspacenetSystem and method for fixed-rate block-based image compression with inferred pixel values
US 5956431 AAbstract
1. In an image processing system, a system for encoding an image, comprising:an image decomposer, coupled to receive an image, for breaking the image into one or more image blocks; at least one block encoder, each block encoder coupled to the image decomposer, for compressing each image block to generate an encoded image block; and an encoded image composer, coupled to each block encoder, for ordering the encoded image blocks into a data file, wherein each block encoder includes a color quantizer, coupled to receive an image block identifiable as a block type, for generating a first and a second codeword from which at least one quantized color is derived, the color quantizer comprising a curve selection module, coupled to the block type, for computing the optimal analog curve for the block type, the first codeword and the second codeword derived from the analog curve. 2. The system for encoding in claim 1, further comprising a header converter, coupled to the image decomposer and the encoded image composer, for receiving a header from the image, modifying the header, and outputting the modified header with the data file.
3. The system for encoding in claim 1, wherein each block encoder further comprises:a bitmap construction module, coupled to the color quantizer, for mapping the colors of an image block to one of the at least one quantized colors. 4. The system for encoding in claim 1, wherein the color quantizer further comprises:a block type module, coupled to receive the image block, for selecting the identifiable block type for the image block; and a codeword generation module, coupled to the curve selection module, for generating the first codeword and the second codeword from the analog curve. 5. In an image processing system, a system for decoding a compressed image, comprising:an encoded image decomposer, coupled to receive encoded image data file having at least one compressed image block, for breaking the encoded image data file into individual compressed image blocks, each compressed image block having at least one associated codeword, each codeword generated through selecting a block type for an original image block comprising the compressed image block, computing an analog curve for the block type, selecting a partition along the analog curve for the computed analog curve, and computing the set of codewords for the partition; at least one block decoder, coupled to the encoded image decomposer, for decompressing the compressed image blocks; and an image composer, coupled to each block decoder, for ordering the decompressed image blocks in an output file. 6. The system for decoding in claim 5, further comprising a header converter, coupled to the encoded image decomposer and the image composer, for receiving a modified header associated with the encoded image data file, generating an output header, and outputting the output header with the output file.
7. The system for decoding in claim 6, wherein each block decoder further comprises:a block type detector, coupled to the encoded image decomposer, for selecting a block type for each compressed image block; a first and a second decoder unit, each decoder unit coupled to the block type detector, for decompressing each compressed image block; and an output selector, coupled to the block type detector and each decoder unit, for outputting the image block from the decoder unit in response to the block type selected by the block type detector. 8. In an image processing system a system for encoding and decoding an image, comprising: an image encoder system, havinga block decomposer for breaking the image into a fixed number of image blocks, each image block having a fixed number of pixels, at least one block encoder, each coupled to the block decomposer, for selecting at least one codeword for each block from which M quantized colors are derived, mapping each pixel for each block to one of the M quantized colors, and outputting the codewords and mapped pixels for each block as an encoded image block, where M is an integer value, and an encoded image composer, coupled to each block encoder, for ordering each encoded image block in an encoded data file, wherein each block encoder includes a color quantizer for examining the image block, including a block type, and generating the at least one codeword from which the M quantized colors are derived, the color quantizer comprising a curve selection module, coupled to receive the block type, for selecting an analog curve in a color space from the selected color set, the at least one codeword derived from the analog curve; and an image decoder system, coupled to the image encoder system, having an encoded image decomposer, coupled to receive the encoded data file, for decomposing, the encoded data file into the encoded image blocks; at least one block decoder, each coupled to the encoded image decomposer, for decoding each encoded image block using the codewords to map each pixel of the encoded block to one of the M quantized colors to produce a decoded image block, and an image composer, coupled to each block decoder, for ordering the decoded image blocks in an output file. 9. The image processing system in claim 8, wherein each block encoder further comprises:a bitmap construction module, coupled to the codeword selection module, for mapping each pixel of the image block to one of the M quantized colors. 10. The image processing system in claim 9, wherein the color quantizer further comprises:a block type module, coupled to receive the image blocks, for selecting the block type for each examined image block, the block type representing a predefined color set; and a codeword generation module, coupled to the curve selection module, for providing the at least one codeword from the analog curve. 11. The image processing system in claim 8, wherein each block decoder comprises:a block type detector, coupled to receive the encoded data block, for selecting the block type for decoding the encoded image block; and a first decoder unit and a second decoder unit, each coupled to the block type detector, each decoder unit decoding the encoded image block to restore one of the M quantized colors derived from the at least one codeword. 12. The image processing system in claim 11, wherein each block decoder further comprises an output selector, the output selector coupled to each decoder unit and the block type detector, for outputting the restored color of the M quantized colors from one of the decoder units in response to the block type selected for the encoded image block.
13. In an image processing system, a method for generating an encoded image of an original image having a header, comprising:converting the header to a modified header; decomposing the original image into image blocks; encoding each image block to generate an encoded image block for each image block, including selecting a set of codewords, the set having at least one codeword, for representing a property value for an image block selecting at least one block type, the selecting the set of codewords further including computing an optimal analog curve for each selected block type, selecting at least one partition along the analog curve for each computed analog curve, and computing the set of codewords for each selected partition; and composing the modified header and each encoded image block in a file to generate the encoded image. 14. The method for generating an encoded image in claim 13, wherein encoding each image block further comprises:quantizing colors for an image block for representing the image block, each quantized color derived from the set of codewords. 15. The method for generating an encoded image in claim 14, wherein selecting the set of codewords further comprises:computing an error for each computed set of codewords; and outputting the block type and set of codewords producing the minimum computed error for each computed set of codewords. 16. In an image processing system, a method for generating an original image from an encoded image including a modified header and at least one encoded image block, comprising:receiving the encoded image data; decomposing the encoded image into the modified header and the individual encoded image blocks; reading the modified header to generate an output header; decoding each individual encoded image block to generate a decoded image block, including receiving each individual encoded image block, including a plurality of codewords, and a bitmap of at least one pixel, the plurality of codewords derived through selecting a block type for an original image block of the encoded image block, computing an analog curve for the block type, selecting a partition along the analog curve for the computed analog curve, and computing the plurality of codewords for the partition; and composing the output header and the individual decoded image blocks to generate an output file of the original image. 17. The method for generating an original image in claim 16, wherein the decoding each individual image block further comprises:detecting the block type for the encoded image block to select a decoder unit; calculating at least one quantized color level for the encoded image block using the set of codewords; and mapping each pixel of the bitmap to one of the calculated quantized color levels for the encoded image block. 18. In an image processing system, a method for compressing an original image and generating an output image representing the original image from the compressed original image, comprising:breaking the original image into a fixed number of image blocks, each image block having an associated color and a fixed number of pixels; selecting a set of codewords, the set having at least one codeword, for each image block to represent colors in a color space, including selecting at least one block type for each image block, computing an optimal analog curve for each selected block type, selecting at least one partition along the analog curve for each computed analog curve, and computing the set of codewords for each selected partition; quantizing colors for each image block, the quantized colors derived from the set of codewords; mapping each pixel to one of the quantized colors to produce a bitmap; generating an encoded image block for each image block, each encoded image block comprising the set of codewords and the bitmap; composing the each encoded image block into an encoded image data file; receiving the encoded image data file at a decoder system; breaking the encoded image data file into the encoded image blocks; decoding each encoded image block using the set of codewords to map each pixel of each encoded image block with a restored quantized color; and composing the restored quantized colors in an output file to output an image representing the original image. 19. The method for compressing an original image and generating an output image representing the original image from the compressed original image in claim 18, wherein the selecting the set of codewords further comprises:computing an error for each of the sets of codewords; and outputting the block type and the set of codewords producing the minimum computed error. 20. The method for compressing an original image and generating an output image representing the original image from the compressed original image in claim 18, wherein decoding each encoded image block further comprises:receiving the individual encoded image block, including the set of codewords, and a bitmap having at least one pixel; detecting the block type for the encoded image block to select a decoder unit; calculating the at least one quantized color level for the encoded image block using the set of codewords; and mapping each pixel of the bitmap to one of the calculated quantized colors for the encoded image block. 21. A system for processing any identified pixel from an encoded image data file having header information, including at least one codeword derived through computation of an analog curve from a selected original image block, and an encoded image block portion including at least one encoded image block derived from an original image block, the system comprising:a block address computation module, coupled to receive each codeword from the header information, for computing an address of an encoded image block having the identified pixel; a block fetching module, coupled to receive the encoded image block portion and the computed address, for fetching the encoded image block having the identified pixel; and a block decoder, coupled to receive the fetched encoded image block, for decoding the image block to generate a quantized color associated with the identified pixel. 22. In an image processing system, a method for processing any identified pixel of an encoded image data file having a header, including at least one codeword derived through calculation of an analog curve associated with an original image block, and an encoded image block portion including at least one encoded image block associated with an original image block, the method comprising:computing an address for an encoded image block having the identified pixel, the address computed from the at least one codeword for the encoded image block; fetching the encoded image block using the computed address; computing quantized color levels for the fetched encoded image block; and selecting a color of the identified pixel from the quantized color levels to output. Description
Discrete Cosine Transform ("DCT") or JPEG-type compressors, allow users to select a level of image quality. With DCT, uncorrelated coefficients are produced so that each coefficient can be treated independently without loss of compression efficiency. The DCT coefficients can be quantized using visually-weighted quantization values which selectively discard the least important information.
DCT, however, suffers from a number of shortcomings. One problem with DCT and JPEG-type compressors is that they require usually bigger blocks of pixels, typically 8×8 or 16×16 pixels, as a minimally accessible unit in order to obtain a reasonable compression factor and quality. Access to a very small area, or even a single pixel involves fetching a large quantity of compressed data, thus requiring increased processor power and memory bandwidth. A second problem with DCT and JPEG-type compressors is that the compression factor is variable, therefore requiring a complicated memory management system that, in turn, requires greater processor resources. A third problem with DCT and JPEG-type compression is that using a large compression factor significantly degrades image quality. For example, the image may be considerably distorted with a form of a ringing around the edges in the image as well as noticeable color shifts in areas of the image. Neither artifact can be removed with subsequent low-pass filtering.
A fourth problem with DCT and JPEG-type compression is that such a decompressor is complex and has a significant associated hardware cost. Further, the high latency of the decompressor results in a large additional hardware cost for buffering throughout the system to compensate for the latency. Finally, a A fifth problem with DCT and JPEG-type compressors is that it is not clear whether a color keyed image can be compressed with such a method and system.
Block truncation coding ("BTC") and color cell compression ("CCC") use a local one-bit quantizer on 4×4 pixel blocks. The compressed data for such a block consists of only two colors and 16-bits that indicate which one of the two colors is assigned to each of the 16 pixels. Decoding a BTC/CCC image consists of using a multiplexer with a look-up table so that once a 16-texel-block (32-bits) is retrieved from memory, the individual pixels are decoded by looking up the two possible colors for that block and selecting the color according to the associated bit from the 16 decision bits.
In a preferred embodiment, the block type module identifies which one of two color sets, which comprise either four quantized pixel values (e.g., colors) or three quantized pixel values (e.g., colors) and a transparency, is to be used for the encoding of each data block received from the block decomposer. The curve selection module and the codeword generation module function to select two base colors, or codewords, that may be used to identify the color set to which each pixel in the image block is mapped.
The image decoder system includes an encoded image decomposer, a header converter, one or more block decoders, and an image composer. The encoded image decomposer is coupled to the header converter and the one or more block decoders. The image composer is coupled to the one or more block decoders and the header converter. The image composer is coupled to output an image representing the original image.
The encoded image data is received by the encoded image decomposer that decomposes, or breaks, the encoded image data into its header and its encoded image blocks. The header is forwarded to the header converter which modifies the header and forwards it to the image composer. The one or more encoded image blocks are independently decoded by one or more block decoders. The image composer orders the decoded image blocks into a data file of decoded image blocks. The data file is concatenated with the header from the header converter and the entire file is output as an image representing the original image.
The present invention also provides for decoding only portions of the encoded image by allowing for random access to portions of the image. Thus, the present invention advantageously can decode an encoded image in a particular order and portion. For example, in a three-dimensional graphics environments, the present invention can select parts of the encoded image used for texture maps.
FIGS. 3A and 3B are block diagrams illustrating two separate embodiments of the image encoder system 220 of the present invention. The image encoder system 220 includes an image decomposer 315, a header converter 321, one or more block encoders 318 (318a-318n, where n is the nth encoder, n being any positive integer), and an encoded image composer 319. The image decomposer 315 is coupled to receive an original image 310 from a source, such as the image source 210. The image decomposer 315 is also coupled to the one or more block encoders 318 and to the header converter 321. The header converter 321 is also coupled to the encoded image composer 319. Each block encoder 318 is also coupled to the encoded image composer 319. The encoded image composer 319 is coupled to the output 320.
The image decomposer 315 receives the original image 310 and forwards information from a header of the original image 310 to the header converter 321. The header converter 321 modifies the original header to generate a modified header, as further described below. The image decomposer 315 also breaks, or decomposes, the original image 310 into R number of image blocks, where R is some integer value. The number of image blocks an original image 310 is broken into may depend on the number of image pixels. For example, in a preferred embodiment an image 310 comprised of A image pixels by B image pixels will typically be (A/4) * (B/4) blocks, where A and B are integer values. For example, where an image is 256 pixels by 256 pixels, there will be 64×64 blocks. In other words, the image is decomposed such that each image block is 4 pixels by 4 pixels (16 pixels). Those skilled in the art will recognize that the number of pixels or the image block size may be varied, for example m×n pixels, where m and n are positive integer values.
Briefly turning to FIG. 2B, there is illustrated an example of a single image block 260 in accordance with the present invention. The image block 260 is comprised of pixels 270. The image block 260 may be defined as an image region W pixels 270 in width by H pixels 270 in height, where Wand H are integer values. In a preferred embodiment, the image block 260 is comprised of W=4 pixels 270 by H=4 pixels 270 (4×4).
Turning back to FIGS. 3A and 3B, each block encoder 318 receives an image block 260 from the image decomposer 315. Each block encoder 318 encodes or compresses each image block 260 that it receives to generate an encoded or compressed image block. Each encoded image block is received by the encoded image composer 319 which orders the encoded blocks in a data file. The data file from the encoded image composer 319 is concatenated with a modified header from the header converter 321 to generate an encoded image data file that is forwarded to the output 320. Further, it is noted that having more than one block encoder 318a-318n allows for encoding multiple image blocks simultaneously, one image block per block encoder 318a-318n, within the image encoder system 220 to increase image processing efficiency and performance.
The original image 310 may be in any one of a variety of formats including red-green-blue ("RGB"), YUV 420, YUV 422, or a proprietary color space. It may be useful in some cases to convert to a different color space before encoding the original image 310. It is noted that in one embodiment of the present invention, each image block 260 is a 4×4 set of pixels where each pixel 270 is 24-bits in size. For each pixel 270 there are 8-bits for a Red(R)-channel, 8-bits for a Green(G)-channel, and 8-bits for a Blue(B)-channel in a red-green-blue ("RGB") implementation color space. Further, each encoded image block is also a 4×4 set of pixels, but, each pixel is only 2-bits in size and has an aggregate size of 4-bits as will be further described below.
FIG. 3C is a block diagram illustrating a block encoder 318 of the present invention in greater detail. The block encoder 318 includes a color quantizer 335 and a bitmap construction module 340. The color quantizer 335 is coupled to the bitmap construction module 340. Further, the color quantizer 335 further emphasizes a block type module 345, a curve selection module 355, and a codeword generation module 360. The block type module 345 is coupled to the curve selection module 355. The curve selection module 355 is coupled to the codeword generation module 360.
Each image block 260 of the decomposed original image 310 is received and initially processed by the color quantizer 335 before being forwarded to the bitmap construction module 340 for further processing. The bitmap construction module 340 outputs encoded image blocks for the encoded image composer 319 to order. The bitmap construction module 340 and the color quantizer 335, including the block type module 345, the curve selection module 355, and the codeword generation module 360, are further discussed below in FIGS. 4A-4E.
Briefly, FIG. 3D is a diagram of a data sequence or string 380 representing the original image 310 that is received by the block decomposer 315. The data string 380 of the original image 310 includes an α-bit header 380a and a b-bit image data 380b, where a and b are integer values. The header 380a may include information such as the pixel width of the image 310, the pixel height of the image 310, and the format of the image 310, e.g., the number of bits to the pixel in RGB or YUV format, for example, as well as other information. The image data is the data 380b representing the original image 310 itself.
FIG. 3E is a diagram of a data sequence or string 385 representing encoded image data 385 that is generated and output 320 by the image encoder system 220. The data string for the encoded image data 385 includes a modified header portion 385a and an encoded image block portion 390-1-390-R. The modified header portion 385a is generated by the header converter 321 from the original header 380a for the original image 310. The modified header generated by the header converter 321 includes information about file type, a number of bits per pixel of the original image 310, addressing into the original image 310, other miscellaneous encoding parameters, as well as the width and height information indicating the size of that original image 310. The encoded image block portion 390- 1-R includes the encoded image blocks 390-1-390-R from the block encoders 318, where R is an integer value that is the number of blocks resulting from the decomposed original image 310.
The data string 390 of the encoded image block includes a codeword section 390a which includes J codewords, where J is an integer value, and a bitmap section 390b. The codeword section 390a includes J codewords 390a that are used to compute the colors indexed by the bitmap 390b. A codeword is a n-bit data string, where n is an integer value, that identifies a pixel property, for example a color component. In a preferred embodiment, there are two 16-bit codewords 390a, CW0, CW1 (J=2). The bitmap is a Q-bit data portion and is further discussed below in FIG. 4B.
Further, in a preferred embodiment, each encoded image block is 64-bits, which includes two 16-bit codewords and a 32-bit (4×4×2 bit) bitmap 395. Encoding the image block 260 as described provides greater system flexibility and increased data processing efficiency as will be further discussed below.
FIGS. 4A-4E describe the operation of the image encoder system 220. FIG. 4A describes the general operation of the image encoder system 220. At the start 402 of operation, data string 380 of the original image 310, that includes the α-bit header 380a and the b-bit image data 380b, is input 404 into the block decomposer 315 from the image source 210. The block decomposer 315 decomposes 406 the original image 310 to extract the α-bit header 380a and forward it to the header converter 321. The block decomposer also 315 decomposes, 406 the original image 310 into image blocks. Each image block 260 is independently compressed, or encoded, 410 in the one or more block encoders 318.
The header converter 321 converts 408 the α-bit header to generate a modified header 385a. The modified header 385a is forwarded to the encoded image composer 319. Simultaneous with the header converter 321 converting 408 the α-bit header, each image block is encoded 410 by the one or more image encoders 318a-318n to generate the encoded image blocks 390-1-390-R. Again, it is noted that each image block 260 may be processed sequentially in one block encoder 318a or multiple image blocks 260 may be processed in parallel in multiple block encoders 318a-318n.
The encoded image blocks 390 are output from the block encoders 318 and are placed into a predefined order by the encoded image composer 319. In a preferred embodiment, the encoded image blocks 390 are ordered in a file from left to right and top to bottom in the same order in which they were broken clown by the block decomposer 315. The image encoder system 220 continues by composing 412 the modified header information 385a from the header converter 321 and the encoded image blocks 390. Specifically, the modified header 385a and the ordered encoded image blocks 390 are concatenated to generate the encoded image data file 385. The encoded image data file 385 is written 414 as encoded output 320 to the memory 115, the storage device 120, or the output device 130, for example.
FIG. 4B shows the encoding process 410 for the encoder system 220 described above in FIG. 2. At the start 418 of operation, codewords are selected 420. As discussed above in FIG. 3F, in a preferred embodiment there are two codewords 390a, CW0, CW1. The process for selecting codewords is further described below in FIG. 4C.
Once the codewords are selected 420 pixel values or properties, such as colors, for the image block 260 are quantized 422. Specifically, the codewords 390a provide points in a pixel space from which M quantized pixel values may be inferred, where M is an integer value. The M quantized pixel values are a limited subset of pixels in a pixel space that are used to represent the current image block. The process for quantizing pixel values, and more specifically colors, will be described below in FIGS. 4D and 4E. Further, it is noted that the embodiments will now be described with respect to colors of a pixel value although one skilled in the art will recognize that in general any pixel value may be used with respect to the present invention.
In a preferred embodiment, each pixel is encoded with two bits of data which can index one of M quantized colors (M=4). Further, in a preferred embodiment the four quantized colors are derived from the two codewords 390a where two colors are the codewords themselves and the other two colors are inferred from the codewords, as will be described below. It is also possible to use the codewords 390a so that there is one index to indicate a transparent color and three indices to indicate colors, of which one color is inferred.
In a preferred embodiment, the bitmap 390b is a 32-bit data string. The bitmap 390b and codewords 390a are output 424 as a 64-bit data string representing an encoded image block 390. Specifically, the encoded image block 390 includes the two 16-bit codewords 390a (n=16) and a 32-bit bitmap 390b. Each codeword 390a CW0, CW1 that is a 16-bit data string includes a 5-bit red-channel, 6-bit green-channel, and 5-bit blue-channel.
FIG. 4C describes the process for selecting 420 the codewords for the image blocks 260 in more detail. At the start 426 of the process, the color quantizer 335 uses the block type module 345 to select 428 the first block type for the image block 260 that is being processed. For example, one block type selected 428 may be a four-color and another block type selected 428 may be a three-color plus transparency, where the colors within the particular block type have equidistant spacing in a color space.
Once the block type is selected 428, the process computes 430 an optimal analog curve for the block type. Computation 430 of the optimal analog curve 430 will be further described below in FIG. 4D. The analog curve is used to simplify quantizing of the colors in the image block. After computing 430 the optimal analog curve, the process selects 432 a partition of the points along the analog curve. A partition may be defined as a grouping of indices {1 . . . (W×H)} into M nonintersecting sets. In a preferred embodiment, the indices (1 . . . 16) are divided into three or four groups, or clusters, (M=3 or 4) depending on the block type.
FIG. 4D further describes the process of identifying the optimal analog curve. The curve selection module 355 starts 448 the process by computing a center of gravity 450 for pixel 270 colors of an image block 260. Computing 450 the center of gravity includes averaging the pixel 270 colors of the image block 260. Once the center of gravity is computed 450, the process identifies 452 a vector in color space to minimize the first moment of the pixel 270 colors of the image block 260.
Specifically, for identifying 452 the vector the process fits a straight line to a set of data points, which are the original pixel 270 colors of the image block 260. A straight line is chosen passing through the center of gravity of the set of points such that it minimizes the "moment of inertia" (the means square error). For example, for three pixel properties, to compute the direction of the line minimizing the moment of inertia, tensor inertia, T, is calculated from the individual colors as follows: ##EQU1## where C0, C1, and C2 represent pixel properties, for example color components in RGB or YUV, relative to a center of gravity. In a preferred embodiment of an RGB color space, C0i is the value of red, C1i is the value of green, and C2i is the value of blue for each pixel, i, of the image block. Further, i takes on integer values from 1 to W×H, so that if W=4 and H=4, i ranges from 1 to 16.
FIG. 4E illustrates the process undertaken by the codeword generation module 360 for selecting 432 the partitions, computing 434, 436 the codewords for the partitions and the associated error, and storing 438, 440 the error value, block type, and codeword if the error value is less than a previously stored error value. The process starts 456 with the codeword generation module 360 projecting 458 the W×H color values onto the previously constructed optimal analog curve. The value of W×H is the size in number of pixels 270 of an image block 260. In a preferred embodiment, where Wand Hare both 4 pixels, W×H is 16 pixels.
Once the colors are projected 458 onto the analog curve, the colors are ordered 460 sequentially along that analog curve based on the position of the color on the one-dimensional analog curve. After the colors are ordered 460, the codeword generation module 360 searches 462 for optimal partitions. That is, the codeword generation module 360 takes the W×H colors (one color associated with each pixel) that are ordered 460 along the analog curve and partitions, or groups, them into a finite number of clusters with a predefined relative spacing. In a preferred embodiment, where W=4 and H=4, so that W×H is 16, the 16 colors are placed in three or four clusters (M=3 or 4).
In conducting the search 462 for the optimal partition, the color selection module 360 finds the best M clusters for the W×H points projected onto the optimal curve, so that the error associated with the selection is minimized. The best M clusters are determined by minimizing the mean square error with the constraint that the points associated with each cluster are spaced to conform to the predefined spacing.
In a preferred embodiment, for a block type of four equidistant colors, the error may be defined as a squared error along the analog curve, such as ##EQU2## where E is the error for the particular grouping or clustering, p0 and p1 are the coded colors, and xi are the projected points on the optimal analog curve.
In instances where the block type indicates three equidistant colors, the error may be defined as a squared error along the analog curve, such as ##EQU3## where, again, E is the error for the particular grouping or clustering, p0 and p1 are the coded colors, and xi are the projected points on the optimal analog curve.
Information indicating the block type is implied by the codewords 390a and the bitmap 390b. In a preferred embodiment, the order of the codewords 390a CW0, CW1, indicate the block type. If a numerical value of CW0 is greater than a numerical value of CW1, the image block is a four color block. Otherwise, the block is a three color plus transparency block.
The output of the bitmap construction module 340 is an encoded image block 390 having the M codewords 390a plus the bitmap 390b. Each encoded image block 390 is received by the encoded image composer 319 that, in turn, orders the encoded image blocks 390 in a file. In a preferred embodiment, the encoded image blocks 390 are ordered from left to right and from top to bottom in the same order as the blocks were broken down by the block decomposer 315. The ordered file having the encoded image blocks 390 is concatenated with the header information 385a that is derived from the header 380a of the original image 310 to generate the encoded image data 385 that is the image encoder system 220 output 320. The image encoder system 220 output 320 may be forwarded to the memory 115, the storage device 120, or the output device 130, for example.
FIG. 5A is a block diagram of an image decoder system 230 in accordance with the present invention. The image decoder system 230 includes an encoded image decomposing unit 501, a header converter 508, one or more block decoders 505 (505a-505m, where m is any positive integer value representing the last block decoder), and an image composer 504. The encoded image decomposer 501 is coupled to receive the encoded image data 385 that was output 320 from the image encoder system 220. The encoded image decomposer 501 is coupled to the one or more block decoders 505a-505m. The one or more block decoders 505a-505m are coupled to the image composer 504 that, in turn, is coupled to the output 240.
The encoded image decomposer 501 receives the encoded image data 385 and decomposes, or breaks, it into its header 385a and the encoded image blocks 390-1-390-R. The encoded image decomposer 501 reads the modified header 385a of the encoded image data 385 and forwards the modified header 385a to the header converter 508. The encoded image decomposer 501 also decomposes the encoded image data 385 into the individual encoded image blocks 390-1-390-R that are forwarded to the one or more block decoders 505a-505m.
The header converter 508 converts the modified header 385a to an output header. Simultaneously, the encoded image blocks 390-1-390-R are decompressed or decoded by the one or more block decoders 505a-505m. It is rioted that the each encoded image block 390 may be processed sequentially in one block decoder 505a or multiple encoded image blocks 390-1-390-R may be processed in parallel with one block decoder 505a-505m for each encoded image block 390-1-390-R. Thus, multiple block decoders 505a-505m allows for parallel processing that increases the processing performance and efficiency of the image decoder system 230.
FIG. 5B is a block diagram of a first embodiment of a block decoder 505 in accordance with the present invention. Each block decoder 505a-505m includes a block type detector 520, one or more decoder units, e.g., 533a-l to 533a-k (k is any integer value), and an output selector 523. The block type detector 520 is coupled to the encoded image decomposer 501, the output selector 523, and each of the one or more decoder units, e.g., 533a-l-533a-k. Each of the decoder units, e.g., 533a-l-533a-k, is coupled to the output selector 523 that, in turn, is coupled to the image composer 504.
The block type detector 520 receives the encoded image blocks 390 and determines the block type for each encoded image block 390. Specifically, the block type detector 520 passes a selector signal to the output selector 523 that will be used to select an output corresponding to the block type detected. The block type is detected based on the codewords 390a. After the block type is determined, the encoded image blocks 390 are passed to each of the decoder units, e.g., 533a-l-533a-k. The decoder units, e.g., 533a-l-533a-k, decompress or decode each encoded image block 390 to generate the colors for the particular encoded image block 390. The decoder units, e.g., 533a-l-533a-k, may be c-channels wide (one channel for each color component (or pixel property) being encoded), where c is any integer value. Using the selector signal, the block type detector 520 enables the output selector 523 to output the color of the encoded image block 390 from one of the decoder units, e.g., 533a-l-533a-k that corresponds with the block type detected by the block type detector 520. Alternatively, using the selector signal, the appropriate decoder unit 533 could be selected so the encoded block is processed through that decoder unit only.
The logic diagram illustrating the decoder units 530, 540 is shown to include portions of the block type detector 520, for example a comparator unit 522. The comparator unit 522 works with a first 2×1 multiplexer 525a and a second 2×1 multiplexer 525b. The comparator unit 522 is coupled to the first and the second 2×1 multiplexers 525a, 525b. Both 2×1 multiplexers 525a, 525b are coupled to a 4×1 multiplexer 526 that serves to select the appropriate color to output.
The CLA adder 556a from the path of the first red-color block 550a of the first decoder unit 530 is coupled to the first 2×1 multiplexer 525a and the CLA adder 556b from the path of the second red-color block 550b of the first decoder unit 530 is coupled to the second 2×1 multiplexer 525b. The adder 558 of the second decoder unit 540 is coupled to both the first and the second 2×1 multiplexers 525a, 525b.
The 4×1 multiplexer 526 is coupled the first and the second red-channel lines 551a, 551b, as well as to the first and the second 2×1 multiplexers 525a, 525b. The 4×1 multiplexer 526 is also coupled to receive a transparency indicator signal that indicates whether or not a transparency (no color) is being sent. The 4×1 multiplexer 526 selects a color for output based on the value of the color index, referenced as the ID signal, that references the associated quantized color for an individual pixel of the encoded image block 390.
FIG. 6A is a flow diagram illustrating operation of the decoder system 230 in accordance with the present invention. For purposes of illustration only, the process for the decoder system 230 will be described with a single block encoder 505 having two decoding units, e.g., 530, 540. Those skilled in the art will recognize that the process is functionally equivalent for decoder systems having more than one block decoder 505 and more than one decoder units, e.g., 533a-l-533a-k.
The process starts 600 with the encoded image decomposer 501 receiving 605 the encoded, or compressed, image data 385 from the encoder system 220, for example, through the memory 115 or the storage device 120. The encoded image decomposer 501 decomposes 610 the encoded image data 385 by forwarding the modified header 385a to the header converter 508. In addition, the encoded image decomposer 501 also decomposes 610 the encoded image data 385 into the individual encoded image blocks 390-1-390-R.
The header converter 508 converts 612 the header information to generate an output header that is forwarded to the image composer 504. Simultaneously, the one or more block decoders 505a-505m decodes 615 the pixel colors for each encoded image block 390. It is again noted that each encoded image block 390 may be decoded 615 sequentially in one block decoder 505a or multiple encoded image blocks 390-1-390-R may be decoded 615 in parallel in multiple block decoders 505a-505m, as described above. The process for decoding the encoded image blocks 390 is further described in FIG. 6B. Each decoded 615 image block is then composed 620 into a data file with the converted 612 header information by the image composer 504. The image composer 504 generates the data file as an output 625 that represents the original image 310.
FIG. 6B is a flow diagram illustrating operation of the block encoder 505 in accordance with the present invention. Once the process is started 630, each encoded image block 390 is received by the block decoder 505 and the block type for each encoded image block 390 is detected 640. Specifically, for a preferred embodiment the first and the second codewords 390a, CW0, CW1, respectively, are received 635 by the block type detector 520 of the block decoder 505. As discussed above, comparing the numerical values of CW0 and CW1 reveals the block type.
The block type detector 520 detects 640 the block type for an encoded image block 390. Specifically, the comparator 522 compares the first and the second codewords 390a, CW0, CW1, and generates a flag signal to enable the first 2×1 multiplexers 525a or the second 2×1 multiplexers 525b which, in turn, selects 645 either the first decoding unit 530 or the second decoding unit 540, respectively. The process then calculates 650 the quantized color levels for the decoder units 530, 540.
To calculate 650 the quantized color levels, the first decoding unit 530 calculates the four colors associated with the two codewords 390a, CW0, CW1, using the following relationship:
CW2=third color=(2/3)CW0+(1/3)CW1;
CW3=fourth color=(1/3)CW0+(2/3)CW1.
CW2=(5/8)CW0+(3/8)CW1; and
CW3=(3/8)CW0+(5/8)CW1. The red-color blocks 550a, 550b serve as a one-bit shift register to get (1/2)CW0 or (1/2)CW1 and each full adder 552a, 552b, 554a, 554b also serves to shift the signal left by 1-bit. Thus, the signal from the first full adders 552a, 552b is (1/4)CW0 or (1/4)CW1, respectively, because of a two-bit overall shift and the signal from the second full adders 554a, 554b is (1/8)CW0 or (1/8)CW1, respectively, because of a three-bit overall shift. These values allow for the above approximations for the color signals.
The second decoder unit 540 calculates 650 three colors associated with the codewords 390a, CW0, CW1, and includes a fourth signal that indicates a transparency is being passed. The second decoder unit 540 calculates colors, for example, as:
CW3=third color=(1/2)CW0+(1/2)CW1; and
After the quantized color levels for the selected 645 decoder unit 530, 540 have been calculated 650, each bitmap value for each pixel is read 655 from the encoded image data block 385. As each index is read 655 it is mapped 660 to one of the four calculated colors if the first decoder unit 530 is selected 645 or one of the three colors and transparency if the second decoder unit 540 is selected. The mapped 660 colors are selected by the 4×1 multiplexer 526 based on the value of the ID signal from the bitmap 390b of the encoded image block 390. As stated previously, a similar process occurs for selection of colors in the green-channel and the blue-channel.
FIG. 7B is a flow diagram illustrating a process of random access to a pixel 270 or an image block 260 using the random access subsystem 700 in accordance with the present invention. When particular pixels 270 have been identified for decoding, the process starts 740 with the image decoder system 230 receiving the encoded image data 385. The modified header 385a of the encoded image data 385 is forwarded to the block address computation module 710 and the encoded image block portion 390-1-R of the encoded image data 385 is forwarded to the block fetching module 720.
Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS5734744 *Jun 7, 1995Mar 31, 1998PixarMethod and apparatus for compression and decompression of color dataUS5822465 *Jun 7, 1995Oct 13, 1998Apple Computer, Inc.Image encoding by vector quantization of regions of an image and codebook updates* Cited by examinerNon-Patent CitationsReference1A. Schilling, et al.; "Texram: A Smart Memory for Texturing"; IEEE Computer Graphics & Applications; May 1996; 16(3) pp. 9-19.2 *A. Schilling, et al.; Texram: A Smart Memory for Texturing ; IEEE Computer Graphics & Applications; May 1996; 16(3) pp. 9 19.3G. Campbell, et al.; "Two Bit/Pixel Full Color Encoding"; Computer Graphics, (Proc. Siggraph '86); Aug. 18-22, 1986; vol. 20, No. 4, Dallas TX; pp. 215-219.4 *G. Campbell, et al.; Two Bit/Pixel Full Color Encoding ; Computer Graphics, (Proc. Siggraph 86); Aug. 18 22, 1986; vol. 20, No. 4, Dallas TX; pp. 215 219.5G. Knittel, et al.; "Hardware and Software for Superior Texture Performance"; In 10; Eurographics Hardware Workshop '95; Maastricht, NL; Aug. 28-29, 1995; pp. 1-8.6 *G. Knittel, et al.; Hardware and Software for Superior Texture Performance ; In 10; Eurographics Hardware Workshop 95; Maastricht, NL; Aug. 28 29, 1995; pp. 1 8.* Cited by examinerReferenced byCiting PatentFiling datePublication dateApplicantTitleUS6597815 *Oct 15, 1999Jul 22, 2003International Business Machines CorporationImage data compression apparatus and method thereofUS6658146 *Jul 12, 1999Dec 2, 2003S3 Graphics Co., Ltd.Fixed-rate block-based image compression with inferred pixel valuesUS6683978Nov 17, 1999Jan 27, 2004S3 Graphics Co., Ltd.Fixed-rate block-based image compression with inferred pixel valuesUS6704362 *Jul 6, 2001Mar 9, 2004Koninklijke Philips Electronics N.V.Resource scalable decodingUS6775417Jan 17, 2002Aug 10, 2004S3 Graphics Co., Ltd.Fixed-rate block-based image compression with inferred pixel valuesUS6870962Apr 30, 2001Mar 22, 2005The Salk Institute For Biological StudiesMethod and apparatus for efficiently encoding chromatic images using non-orthogonal basis functionsUS6909748Dec 20, 2001Jun 21, 2005Sorenson Media, Inc.Method and system for image compression using block size heuristicsUS6940511Dec 20, 2002Sep 6, 2005Telefonaktiebolaget L M Ericsson (Publ)Graphics texture processing methods, apparatus and computer program products using texture compression, block overlapping and/or texture filteringUS7039244Jul 16, 2004May 2, 2006S3 Graphics Co., Ltd.Fixed-rate block based image compressionUS7043087Jul 16, 2004May 9, 2006S3 Graphics Co., Ltd.Image processing systemUS7082217Oct 28, 2002Jul 25, 2006Web Technology Corp.Method and apparatus for image compression in block unitsUS7142221 *Jan 8, 2004Nov 28, 2006Renesas Technology Corp.Display drive control device and electric device including display deviceUS7236649Jul 26, 2006Jun 26, 2007Imagination Technologies LimitedMethod and apparatus for compressing data and decompressing compressed dataUS7239743Jan 13, 2004Jul 3, 2007Stmicroelectronics S.R.L.Methods and apparatus for texture compression and computer program product thereforUS7242811Dec 3, 2002Jul 10, 2007Imagination Technologies LimitedMethod and apparatus for compressing data and decompressing compressed dataUS7286712Mar 21, 2005Oct 23, 2007The Salk Institute For Biological StudiesMethod and apparatus for efficiently encoding chromatic images using non-orthogonal basis functionsUS7385611 *Dec 7, 2005Jun 10, 2008Nvidia CorporationDecompression of block encoded texture dataUS7505624May 27, 2005Mar 17, 2009Ati Technologies UlcBlock-based image compression method and apparatusUS7606429Mar 25, 2005Oct 20, 2009Ati Technologies UlcBlock-based image compression method and apparatusUS7633507Jul 12, 2005Dec 15, 2009Telefonaktiebolaget L M Ericsson (Publ)Graphics texture processing methods, apparatus and computer program products using block overlapping and/or texture filteringUS7636471Jul 8, 2004Dec 22, 2009Telefonaktiebolaget Lm Ericsson (Publ)Image processingUS7643679Feb 13, 2004Jan 5, 2010Ati Technologies UlcMethod and apparatus for block based image compression with multiple non-uniform block encodingsUS7657105Dec 17, 2004Feb 2, 2010Telefonaktiebolaget Lm Ericsson (Publ)Alpha image processingUS7683092Mar 10, 2006Mar 23, 2010Merck Sharp & Dohme Corp.Crystalline forms of antidiabetic compoundsUS7693337Dec 17, 2004Apr 6, 2010Telefonaktiebolaget Lm Ericsson (Publ)Multi-mode alpha image processingUS7734105 *Dec 17, 2004Jun 8, 2010Telefonaktiebolaget Lm Ericsson (Publ)Multi-mode image processingUS7751630 *Jul 1, 2005Jul 6, 2010Telefonaktiebolaget Lm Ericsson (Publ)Multi-mode image processingUS7764833Jan 31, 2006Jul 27, 2010Ati Technologies UlcMethod and apparatus for anti-aliasing using floating point subpixel color values and compression of sameUS7787691Apr 11, 2006Aug 31, 2010Telefonaktiebolaget Lm Ericsson (Publ)High quality image processingUS7801363 *Mar 2, 2006Sep 21, 2010S3 Graphics Co., Ltd.Image CODEC engineUS7826616 *Sep 3, 2009Nov 2, 2010Novell, Inc.Adaptive method and system for encoding digital images for the internetUS7853092Jan 11, 2007Dec 14, 2010Telefonaktiebolaget Lm Ericsson (Publ)Feature block compression/decompressionUS7903892 *Oct 29, 2002Mar 8, 2011Ati Technologies UlcImage analysis for image compression suitability and real-time selectionUS8094164 *May 27, 2008Jan 10, 2012Nvidia CorporationDecompression of block encoded texture dataUS8102402Mar 3, 2006Jan 24, 2012Arm Norway AsMethod of and apparatus for encoding dataUS8111928Sep 26, 2003Feb 7, 2012Ati Technologies UlcMethod and apparatus for compression of multi-sampled anti-aliasing color dataUS8204324 *Jan 22, 2008Jun 19, 2012Imagination Technologies LimitedMethod and apparatus for compressing and decompressing dataUS8260066Mar 23, 2007Sep 4, 2012Telefonaktiebolaget Lm Ericsson (Publ)Image processingUS8289343Dec 8, 2011Oct 16, 2012Arm Norway AsMethod of and apparatus for encoding and decoding dataUS8319789 *Apr 13, 2005Nov 27, 2012Sony Computer Entertainment Inc.Image generation device and image generation methodUS8326053Jun 16, 2009Dec 4, 2012Ati Technologies UlcMethod and apparatus for block based image compression with multiple non-uniform block encodingsUS8326055Jun 11, 2010Dec 4, 2012S3 Graphics Co., Ltd.Image codec engineUS8369629Jan 22, 2007Feb 5, 2013Telefonaktiebolaget L M Ericsson (Publ)Image processing using resolution numbers to determine additional component valuesUS8437563Mar 19, 2008May 7, 2013Telefonaktiebolaget L M Ericsson (Publ)Vector-based image processingUS8457417 *May 24, 2006Jun 4, 2013Telefonaktiebolaget Lm Ericsson (Publ)Weight based image processingUS8520943Sep 16, 2011Aug 27, 2013Ati Technologies UlcMethod and apparatus for block based image compression with multiple non-uniform block encodingsUS8526726 *Jun 4, 2012Sep 3, 2013Imagination Technologies, LimitedMethod and apparatus for compressing and decompressing dataUS8571339 *Mar 11, 2008Oct 29, 2013Telefonaktiebolaget Lm Ericsson (Publ)Vector-based image processingUS8577164May 29, 2009Nov 5, 2013Telefonaktiebolaget L M Ericsson (Publ)Image processingUS8625910 *Feb 25, 2011Jan 7, 2014Adobe Systems IncorporatedCompression of image dataUS8644627Jan 23, 2013Feb 4, 2014Telefonaktiebolaget L M Ericsson (Publ)Using resolution numbers to determine additional component valuesUS8655063Feb 24, 2010Feb 18, 2014Telefonaktiebolaget L M Ericsson (Publ)Decoding system and method operable on encoded texture element blocksUS8761528 *Dec 17, 2013Jun 24, 2014Adobe Systems IncorporatedCompression of image dataUS8774535Jan 18, 2012Jul 8, 2014Ati Technologies UlcMethod and apparatus for compression of multi-sampled anti-aliasing color dataUS8811737Jul 30, 2013Aug 19, 2014Ati Technologies UlcMethod and apparatus for block based image compression with multiple non-uniform block encodingsUS8824383Oct 12, 2010Sep 2, 2014Telefonaktiebolaget L M Ericsson (Publ)Downlink scheduling in heterogeneous networksUS8891886Sep 28, 2012Nov 18, 2014Arm LimitedMethod of and apparatus for encoding dataUS8908980 *Dec 3, 2012Dec 9, 2014S3 Graphics Co., Ltd.Image codec engineUS9041723May 4, 2012May 26, 2015Arm LimitedMethod of and apparatus for encoding and decoding dataUS9058637May 4, 2012Jun 16, 2015Arm LimitedMethod of and apparatus for encoding and decoding dataUS9087365Mar 14, 2013Jul 21, 2015Telefonaktiebolaget L M Ericsson (Publ)Weight based image processingUS9129543Jun 18, 2010Sep 8, 2015Telefonaktie L M Ericsson (publ)Texture compression and decompressionUS9142037Jul 2, 2013Sep 22, 2015Arm LimitedMethods of and apparatus for encoding and decoding dataUS9143160Sep 3, 2010Sep 22, 2015Telefonaktiebolaget L M Ericsson (Publ)Co-compression and co-decompression of data valuesUS9177415Jan 30, 2013Nov 3, 2015Arm LimitedMethods of and apparatus for encoding and decoding dataUS9189868Mar 10, 2011Nov 17, 2015Tangentix LimitedMultimedia content delivery systemUS9418450Aug 31, 2006Aug 16, 2016Ati Technologies UlcTexture compression techniquesUS9466125May 12, 2015Oct 11, 2016Telefonaktiebolaget Lm Ericsson (Publ)Weight based image processingUS9524535Apr 20, 2015Dec 20, 2016Arm LimitedMethod of and apparatus for encoding and decoding dataUS9524566May 5, 2015Dec 20, 2016Arm LimitedMethod of and apparatus for encoding and decoding dataUS9582845May 4, 2012Feb 28, 2017Arm LimitedMethod of and apparatus for encoding and decoding dataUS9626730May 4, 2012Apr 18, 2017Arm LimitedMethod of and apparatus for encoding and decoding dataUS9640149 *Jul 21, 2015May 2, 2017Think Silicon SaMethods for fixed rate block based compression of image dataUS20030118101 *Dec 20, 2001Jun 26, 2003Dinerstein Jonathan J.Method and system for image compression using block size heuristicsUS20030138152 *Dec 3, 2002Jul 24, 2003Simon FenneyMethod and apparatus for compressing data and decompressing compressed dataUS20030161400 *Feb 27, 2002Aug 28, 2003Dinerstein Jonathan J.Method and system for improved diamond motion searchUS20030227462 *Dec 20, 2002Dec 11, 2003Tomas Akenine-MollerGraphics texture processing methods, apparatus and computer program products using texture compression, block overlapping and/or texture filteringUS20040081356 *Oct 28, 2002Apr 29, 2004Web Technology CorpMethod and apparatus for image compression in block unitsUS20040081357 *Oct 29, 2002Apr 29, 2004David OldcornImage analysis for image compression suitability and real-time selectionUS20040150653 *Jan 8, 2004Aug 5, 2004Renesas Technology Corp.Display drive control device and electric device including display deviceUS20040156543 *Jan 13, 2004Aug 12, 2004Pierluigi GardellaMethods and apparatus for texture compression and computer program product thereforUS20040161146 *Sep 26, 2003Aug 19, 2004Van Hook Timothy J.Method and apparatus for compression of multi-sampled anti-aliasing color dataUS20040228527 *Feb 13, 2004Nov 18, 2004Konstantine IourchaMethod and apparatus for block based image compression with multiple non-uniform block encodingsUS20040258322 *Jul 16, 2004Dec 23, 2004Zhou HongFixed-rate block based image compressionUS20050264573 *Jul 12, 2005Dec 1, 2005Tomas Akenine-MollerGraphics texture processing methods, apparatus and computer program products using texture compression, block overlapping and/or texture filteringUS20060056711 *Mar 21, 2005Mar 16, 2006The Salk Institute For Biological StudiesMethod and apparatus for efficiently encoding chromatic images using non-orthogonal basis functionsUS20060188163 *Jan 31, 2006Aug 24, 2006Ati Technologies Inc.Method and apparatus for anti-aliasing using floating point subpixel color values and compression of sameUS20060210178 *Mar 2, 2006Sep 21, 2006Zhou HongImage CODEC engineUS20060215914 *Mar 25, 2005Sep 28, 2006Ati Technologies, Inc.Block-based image compression method and apparatusUS20060262133 *Aug 1, 2006Nov 23, 2006Renesas Technology Corp.Display drive control device and electric device including display deviceUS20060269127 *May 27, 2005Nov 30, 2006Ati-Technologies, Inc.Block-based image compression method and apparatusUS20060269152 *Jul 26, 2006Nov 30, 2006Imagination Technologies LimitedMethod and apparatus for compressing data and decompressing compressed dataUS20070019869 *Dec 17, 2004Jan 25, 2007 Multi-mode alpha image processingUS20070052714 *May 17, 2006Mar 8, 2007Aten International Co., Ltd.Video processing systemUS20070071333 *Dec 17, 2004Mar 29, 2007Stroem JacobMulti-mode image processingUS20070127812 *Dec 17, 2004Jun 7, 2007Jacob StromAlpha image processingUS20070140554 *Jul 8, 2004Jun 21, 2007Stroem JacobImage processingUS20070237404 *Apr 11, 2006Oct 11, 2007Telefonaktiebolaget Lm Ericsson (Publ)High quality image processingUS20080055331 *Aug 31, 2006Mar 6, 2008Ati Technologies Inc.Texture compression techniquesUS20080094409 *Apr 13, 2005Apr 24, 2008Sony Computer Entertainment Inc.Image Generation Device and Image Generation MethodUS20080170795 *Jan 11, 2007Jul 17, 2008Telefonaktiebolaget Lm Ericsson (Publ)Feature block compression/decompressionUS20080187218 *May 24, 2005Aug 7, 2008Telefonaktiebolaget Lm EricssonWeight Based Image ProcessingUS20080221198 *Mar 10, 2006Sep 11, 2008Dalian ZhaoNovel Crystalline Forms of Antidiabetic CompoundsUS20080310740 *Jul 1, 2005Dec 18, 2008Jacob StromMulti-Mode Image ProcessingUS20090021521 *Mar 3, 2006Jan 22, 2009Arm Norway AsMethod Of And Apparatus For Encoding DataUS20090046935 *Jan 22, 2007Feb 19, 2009Tomas Akenine-MollerImage processingUS20090110305 *Jan 22, 2008Apr 30, 2009Simon FenneyMethod and apparatus for compressing and decompressing dataUS20090202159 *Mar 23, 2007Aug 13, 2009Telefonaktiebolaget Lm Ericsson (Publ)Image ProcessingUS20090257651 *Apr 2, 2009Oct 15, 2009Stmicroelectronics (Grenoble) SasCompression/decompression of digital imagesUS20090274366 *Jun 16, 2009Nov 5, 2009Advanced Micro Devices, Inc.Method and apparatus for block based image compression with multiple non-uniform block encodingsUS20100027883 *Sep 3, 2009Feb 4, 2010Novell, Inc.Adaptive method and system for encoding digital images for the internetUS20100046846 *Dec 18, 2007Feb 25, 2010Sony Computer And/or DecompressionImage compression and/or decompressionUS20100129000 *Mar 11, 2008May 27, 2010Stroem JacobVector-based image processingUS20110002537 *Jun 11, 2010Jan 6, 2011Via Technologies, Inc.Image codec engineUS20110055441 *Apr 1, 2010Mar 3, 2011Kabushiki Kaisha ToshibaData compression and decompression apparatus and data compression and decompression methodUS20110235928 *May 29, 2009Sep 29, 2011Teleonaktiebolaget L M Ericsson (publ)Image processingUS20120219233 *Feb 25, 2011Aug 30, 2012Tinic UroCompression of Image DataUS20120328191 *Jun 4, 2012Dec 27, 2012Imagination Technologies, Ltd.Method and apparatus for compressing and decompressing dataUS20160353122 *Apr 13, 2016Dec 1, 2016Samsung Electronics Co., Ltd.Variable-rate texture compression using fixed-rate codesCN1659595BJun 2, 2003May 12, 2010艾利森电话股份有限公司Method and apparatus for encoding texture informationCN100498838C *Dec 17, 2004Jun 10, 2009艾利森电话股份有限公司Multi-mode alpha image processing method and systemCN100504926CDec 17, 2004Jun 24, 2009艾利森电话股份有限公司Alpha image processingCN100573587CJul 1, 2005Dec 23, 2009艾利森电话股份有限公司Multi-mode image processing method and systemCN101203886BMar 3, 2006Mar 14, 2012Arm挪威股份有限公司Method and equipment for encoding dataDE202009002693U1Feb 25, 2009Jun 18, 2009Krause, PhilippTexturkomprimierung mit entfernungsabhängiger Genauigkeit der Codierung von FarbcodewörternEP1445734A1 *Feb 6, 2003Aug 11, 2004STMicroelectronics S.r.l.Method and apparatus for texture compressionEP1768059A3 *Jun 2, 2003Jun 27, 2007Telefonaktiebolaget LM Ericsson (publ)Method and apparatus for texturing a pixelEP1967010A1 *Jan 25, 2007Sep 10, 2008Microsoft CorporationBayesian demosaicing using a two-color imageEP1967010A4 *Jan 25, 2007Jan 18, 2012Microsoft CorpBayesian demosaicing using a two-color imageEP1977394A4 *Jan 23, 2007Apr 12, 2017Nokia Technologies OyCompression of images for computer graphicsEP2107812A1Apr 3, 2008Oct 7, 2009STMicroelectronics (Grenoble) SASCompression/decompression of digital imagesEP2320380A1Jul 1, 2005May 11, 2011Telefonaktiebolaget L M Ericsson (Publ)Multi-mode image processingEP2479723A1Dec 3, 2002Jul 25, 2012Imagination Technologies LimitedApparatus for scaling up a low resolution imageEP2688042A1Jul 8, 2004Jan 22, 2014Telefonaktiebolaget L M Ericsson AB (Publ)Image processingEP3023940A1May 24, 2006May 25, 2016Telefonaktiebolaget LM Ericsson (publ)Weight based image processingWO2002088907A2 *Apr 30, 2002Nov 7, 2002The Salk Institute For Biological StudiesMethod and apparatus for efficiently encoding chromatic images using non-orthogonal basis functionsWO2002088907A3 *Apr 30, 2002May 1, 2003Salk Inst For Biological StudiMethod and apparatus for efficiently encoding chromatic images using non-orthogonal basis functionsWO2003049037A3 *Dec 3, 2002Nov 27, 2003Imagination Tech LtdMethod and apparatus for compressing data and decompressing compressed dataWO2003105090A1 *Jun 2, 2003Dec 18, 2003Telefonaktiebolaget L M EricssonMethod and apparatus for encoding texture informationWO2005059836A1Jul 8, 2004Jun 30, 2005Telefonaktiebolaget Lm Ericsson (Publ)Image processingWO2005059837A1 *Dec 17, 2004Jun 30, 2005Telefonaktiebolaget Lm Ericsson (Publ)Alpha image processingWO2005059838A1 *Dec 17, 2004Jun 30, 2005Telefonaktiebolaget Lm Ericsson (Publ)Multi-mode alpha imag eprocessingWO2005059839A1 *Dec 17, 2004Jun 30, 2005Telefonaktiebolaget Lm Ericsson (Publ)Multi-mode image processingWO2006006915A1 *Jul 1, 2005Jan 19, 2006Telefonaktiebolaget Lm Ericsson (Publ)Multi-mode image processingWO2006092616A2 *Mar 3, 2006Sep 8, 2006Arm Norway AsMethod of and apparatus for encoding dataWO2006092616A3 *Mar 3, 2006Nov 16, 2006Falanx Microsystems AsMethod of and apparatus for encoding dataWO2007084062A2 *Jan 22, 2007Jul 26, 2007Telefonaktiebolaget Lm Ericsson (Publ).Image processingWO2007084062A3 *Jan 22, 2007Sep 13, 2007Ericsson Telefon Ab L MImage processingWO2007117206A2 *Mar 6, 2007Oct 18, 2007Telefonaktiebolaget Lm Ericsson (Publ)High quality image processingWO2007117206A3 *Mar 6, 2007Jan 3, 2008Ericsson Telefon Ab L MHigh quality image processingWO2011110855A2Mar 10, 2011Sep 15, 2011Tangentix LimitedMultimedia content delivery systemWO2012030262A1 *Sep 3, 2010Mar 8, 2012Telefonaktiebolaget Lm Ericsson (Publ)Co-compression and co-decompression of data values* Cited by examinerClassifications U.S. Classification382/253, 382/232, 382/233, 382/166International ClassificationH03M7/30, H04N7/30, G06T9/00, H04N1/41Cooperative ClassificationH04N19/13, H04N19/91, H04N19/60, G06T9/00, G06T9/005, H03M7/30European ClassificationH04N7/30E2, G06T9/00S, H03M7/30, G06T9/00Legal EventsDateCodeEventDescriptionFeb 24, 1998ASAssignmentOwner name: S3 INCORPORATED, CALIFORNIAFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:IOURCHA, KONSTANTINE I.;NAYAK, KRISHNA S.;HONG, ZHOU;REEL/FRAME:008990/0197;SIGNING DATES FROM 19980203 TO 19980211May 7, 2002ASAssignmentOwner name: S3 GRAPHICS CO., LTD., CAYMAN ISLANDSFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SONICBLUE INCORPORATED;REEL/FRAME:012852/0016Effective date: 20010103Mar 21, 2003FPAYFee paymentYear of fee payment: 4Apr 9, 2003REMIMaintenance fee reminder mailedMar 21, 2007FPAYFee paymentYear of fee payment: 8Aug 25, 2007ASAssignmentOwner name: SONICBLUE INCORPORATED, CALIFORNIAFree format text: CHANGE OF NAME;ASSIGNOR:S3 INCORPORATED;REEL/FRAME:019744/0134Effective date: 20001109Mar 21, 2011FPAYFee paymentYear of fee payment: 12RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services