IP Library Granted Patent US 8,520,943
Granted Patent B2
US 8,520,943 · App. 13/234,765 · Granted Aug 27, 2013

Method and apparatus for block based image compression with multiple non-uniform block encodings

Inventors: Konstantine Iourcha (San Jose, CA); Andrew S. C. Pomianowski (Palo Alto, CA); Raja Koduri (Santa Clara, CA)
Assignee: ATI Technologies ULC
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,520,943
App. No.
13/234,765
Granted
Aug 27, 2013
Kind
B2
Abstract

Embodiments of the present invention are directed to a method and apparatus for block based image compression with multiple non-uniform block encodings. In one embodiment, an image is divided into blocks of pixels. In one embodiment the blocks are four pixels by four pixels, but other block sizes are used in other embodiments. In one embodiment, a block of pixels in the original image is compressed using two different methods to produce a first and second compressed block. Thus, each block in the original image is represented by two, typically different, compressed blocks. In one embodiment, color associated with a pixel is determined by combining the compressed information about the pixel in the first compressed block with information about the pixel in the second compressed block. In another embodiment, global information about the image is combined with the information in the first and second compressed blocks.

Claims (75)

1. A method adapted for use in an image compression apparatus to compress an input image comprising a plurality of pixels, the method comprising:

partitioning, by said image compression apparatus, said input image into a plurality of original blocks, each comprising a selected subset of the pixels comprising said input image;

decomposing, by said image compression apparatus, each of said original blocks to generate a respective one of a plurality of decomposed blocks by applying a function to an original value of each of said pixels comprising each of said original blocks to obtain a decomposed value selected to reduce the amount of space needed to encode said original value;

compressing, by said image compression apparatus, each of said decomposed blocks to generate a respective one of a plurality of compressed blocks; and

combining, by said image compression apparatus, all of said plurality of compressed blocks to generate an output image.

2. The method of claim 1 wherein compressing is further comprised of:

determining a best fit curve for said decomposed values;

storing two end point values selected on said best fit curve; and

storing an index value for each of said pixels in said decomposed block wherein each of said index values comprises a respective one of a plurality of points selected on said best fit curve.

3. The method of claim 1 wherein said best fit curve is a straight line.

4. The method of claim 3 wherein each of said end point values comprises 8 bits.

5. The method of claim 4 wherein each of said index values comprises a selected interpolated value on said best fit curve between said end points.

6. The method of claim 5 wherein each of said index values comprises 3 bits.

7. The method of claim 6 wherein each of said index values comprises a vector that represents the axis of the function stored in the compressed block.

8. The method of claim 7 wherein said vector is of unit length.

9. The method of claim 3 wherein each of said index values comprises a vector that represents the axis of the function stored in the compressed block.

10. The method of claim 9 wherein said vector is of unit length.

11. The method of claim 1 wherein each of said index values comprises a selected interpolated value on said best fit curve between said end points.

12. The method of claim 11 wherein each of said index values comprises 3 bits.

13. The method of claim 12 wherein each of said index values comprises a vector that represents the axis of the function stored in the compressed block.

14. The method of claim 13 wherein said vector is of unit length.

15. The method of claim 1 wherein each of said end point values comprises 8 bits.

16. The method of claim 15 wherein each of said index values comprises 3 bits.

17. The method of claim 16 wherein each of said index values comprises a vector that represents the axis of the function stored in the compressed block.

18. The method of claim 17 wherein said vector is of unit length.

19. The method of claim 1 wherein each of said index values comprises 3 bits.

20. The method of claim 1 wherein each of said index values comprises a vector that represents the axis of the function stored in the compressed block.

21. The method of claim 20 wherein said vector is of unit length.

22. A method of generating an output pixel from compressed pixel data comprising:

generating, by an apparatus, a first value associated with the output pixel from a first portion of said compressed pixel data;

generating, by an apparatus, a second value associated with the output pixel from a second portion of said compressed pixel data, said second portion different from said first portion; and

combining, by an apparatus, said first and second values to generate said output pixel.

23. The method of claim 22 wherein said first value comprises color.

24. The method of claim 22 wherein said combining comprises appending said second value to said first value.

25. The method of claim 22 wherein said combining comprises averaging said first and second values.

26. An image compression system operative to compress an input image comprising a plurality of pixels, the system comprising:

logic operative to partition said input image into a plurality of original blocks, each comprising a selected subset of the pixels comprising said input image;

decompose each of said original blocks to generate a respective one of a plurality of decomposed blocks by applying a function to an original value of each of said pixels comprising each of said original blocks to obtain a decomposed value selected to reduce the amount of space needed to encode said original value;

compress each of said decomposed blocks to generate a respective one of a plurality of compressed blocks; and

combine all of said plurality of compressed blocks to generate an output image.

27. The system of claim 26 wherein compressing is further comprised of:

determining a best fit curve for said decomposed values;

storing two end point values selected on said best fit curve; and

storing an index value for each of said pixels in said decomposed block wherein each of said index values comprises a respective one of a plurality of points selected on said best fit curve.

28. The system of claim 26 wherein said best fit curve is a straight line.

29. The system of claim 28 wherein each of said end point values comprises 8 bits.

30. The system of claim 29 wherein each of said index values comprises a selected interpolated value on said best fit curve between said end points.

31. The system of claim 30 wherein each of said index values comprises 3 bits.

32. The system of claim 31 wherein each of said index values comprises a vector that represents the axis of the function stored in the compressed block.

33. The system of claim 32 wherein said vector is of unit length.

34. The system of claim 28 wherein each of said index values comprises a vector that represents the axis of the function stored in the compressed block.

35. The system of claim 34 wherein said vector is of unit length.

36. The system of claim 26 wherein each of said index values comprises a selected interpolated value on said best fit curve between said end points.

37. The system of claim 36 wherein each of said index values comprises 3 bits.

38. The system of claim 37 wherein each of said index values comprises a vector that represents the axis of the function stored in the compressed block.

39. The system of claim 38 wherein said vector is of unit length.

40. The system of claim 26 wherein each of said end point values comprises 8 bits.

41. The system of claim 40 wherein each of said index values comprises 3 bits.

42. The system of claim 41 wherein each of said index values comprises a vector that represents the axis of the function stored in the compressed block.

43. The system of claim 42 wherein said vector is of unit length.

44. The system of claim 26 wherein each of said index values comprises 3 bits.

45. The system of claim 26 wherein each of said index values comprises a vector that represents the axis of the function stored in the compressed block.

46. The system of claim 45 wherein said vector is of unit length.

47. An image compression system comprising:

logic operative to compress an original image block by generating:

a first portion representing a first portion of the original image block, said first portion generated using a first algorithm; and

a second portion representing a second portion of the original image block, said second portion generated using a second algorithm, said second algorithm different from said first algorithm.

48. An image compression system comprising:

logic operative to generate an output pixel from compressed pixel data comprising:

generating a first value associated with the output pixel from a first portion of said compressed pixel data;

generating a second value associated with the output pixel from a second portion of said compressed pixel data, said second portion different from said first portion; and

combining said first and second values to generate said output pixel.

49. The system of claim 48 wherein said first value comprises color.

50. The system of claim 48 wherein said combining comprises appending said second value to said first value.

51. The system of claim 48 wherein said combining comprises averaging said first and second values.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 3, 2019
From: IOURCHA, KONSTANTINE; POMIANOWSKI, ANDREW S.C.; KODURI, RAJA
To: ATI TECHNOLOGIES INC.
Reel/Frame 050245/0435 →
CHANGE OF NAME Recorded Sep 3, 2019
From: ATI TECHNOLOGIES INC.
To: ATI TECHNOLOGIES ULC
Reel/Frame 050254/0818 →
Continuity (4)
Continuation 12485537 · Jun 16, 2009
Continuation 10778902 · Feb 13, 2004
Provisional Application 60447862 · Feb 13, 2003
Related Publication 20120002873A1 · Jan 5, 2012