IP Library Granted Patent US 7,091,985
Granted Patent B1
US 7,091,985 · App. 09/571,790 · Granted Aug 15, 2006

System and method for compressing color data using expandable color palette

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 7,091,985
App. No.
09/571,790
Granted
Aug 15, 2006
Kind
B1
Abstract

A method, apparatus, and information bearing medium for compressing color utilizes an expandable color palette for storing a pre-established number of n-bit color codes. Each of the n-bit color codes maps to an m-bit color value, where m is an integer greater than n. Up to the pre-established number of n-bit color codes are stored in a first palette table of the color palette. The color palette is expanded to include up to a specified number of palette tables for storing sets of the pre-established number of n-bit color codes. The pre-established number of n-bit color codes is characterized by 2 n −1 color codes. The color palette is expanded to include up to (m/n)−1 palette tables for storing sets of 2 n −1 color codes. Each of the palette tables is associated with a pixel table which stores a linking value for associating a particular palette table to a subsequently generated palette table.

Claims (90)

1. A method of compressing color data, comprising:

providing an expandable color palette for storing a pre-established number of n-bit color codes, each of the n-bit color codes mapping to an m-bit color value, wherein m is an integer greater than n;

storing up to the pre-established number of n-bit color codes in a first palette table of the color palette;

expanding the color palette to include up to a specified number of additional palette tables for storing additional sets of the pre-established number of n-bit color codes; and

providing a link for associating the first palette table to one or more additional palette tables.

2. The method of claim 1 , wherein the pre-established number of n-bit color codes is characterized by 2 n −1 color codes.

3. The method of claim 1 , wherein expanding the color palette comprises expanding the color palette to include up to (m/n)−1 palette tables for storing sets of 2 n −1 color codes.

4. The method of claim 1 , wherein storing the color codes further comprises providing up to (m/n) pixel maps, the method further comprising using up to (m/n)−1 pixel maps to facilitate storing of the n-bit color codes in an associated palette table.

5. The method of claim 1 , wherein n=8 bits, m=32 bits, such that each palette table stores up to 255 8-bit color codes, and the color palette is expandable to up to 3 palette tables.

6. The method of claim 1 , further comprising:

providing a usage bitmap representative of the graphic drawing space, the usage bitmap comprising pixel values representative of a transparency state of a corresponding pixel in the graphic drawing space; and

writing a value indicative of a non-transparent state to pixel values in the usage bitmap having an associated color code in one of the palette tables.

7. The method of claim 1 , further comprising:

providing a first pixel map of the graphic drawing space, the first pixel map comprising palette values each representing an n-bit color code and a palette table identifier, the palette table identifier associating the first pixel map with the first palette table; and

generating up to a total of (m/n) pixel maps, each of (m/n)−1 pixel maps being associated with one of the additional palette tables.

8. The method of claim 7 , further comprising:

providing a usage bitmap representative of the graphic drawing space, the usage bitmap comprising pixel values representative of a transparency state of a corresponding pixel in the graphic drawing space, a non-transparent state for pixel values in the usage bitmap indicating usage of an associated color code in one of the palette tables;

after storing the pre-established number of n-bit color codes in each of (m/n)−1 palette tables, generating an (m/n th ) pixel map;

looking up a particular m-bit color value associated with non-transparent pixel locations in the usage bitmap; and

replacing palette values at the associated non-transparent pixel locations in the (m/n) pixel maps with m-bit color data, such that the m-bit color value is divided into (m/n) segments and each of the segments is respectively stored in the (m/n) pixel maps at the associated non-transparent pixel locations.

9. The method of claim 1 , further comprising reading color codes from the color palette.

10. The method of claim 1 , further comprising:

searching the first palette table for a particular m-bit color value and, if not located in the first palette table, searching the additional palette tables for the particular m-bit color value; and

reading the n-bit color code from the first or additional palette tables in which the m-bit color value is located.

11. A method of compressing color data, comprising:

providing an expandable color palette comprising n-bit color codes, each of the n-bit color codes mapping to an m-bit color value, wherein m is an integer greater than n;

providing a pixel map of a graphic drawing space, the pixel map comprising palette values each representing an n-bit color code and a palette table identifier;

searching, in response to an m-bit color value input, the color palette for a particular n-bit color code associated with the input m-bit color value, and writing the particular n-bit color code in the pixel map at each pixel map location in which the m-bit color value appears;

inserting, if the particular m-bit color value does not appear in a palette table of the color palette, the m-bit color value in an available location in the palette table and writing the particular n-bit color code in the pixel map at each pixel map location in which the m-bit color value appears;

generating, if no location is available in the palette table, an additional pixel map and an additional palette table, inserting the m-bit color value in the additional palette table, and writing the particular n-bit color code in the additional pixel map at each additional pixel map location in which the m-bit color value appears; and

providing a link for associating the palette table to the additional palette table.

12. The method of claim 11 , wherein up to (m/n)−1 palette tables are generated for storing sets of 2 n −1 n-bit color codes.

13. The method of claim 11 , wherein up to a total of (m/n)−1 pixel maps are generated for storing respective sets of 2 n −1 n-bit color codes.

14. The method of claim 11 , wherein n=8 bits, m=32 bits, such that each palette table stores up to 255 8-bit color codes, and the color palette is expandable to up to 3 generated palette tables.

15. The method of claim 11 , wherein the pixel maps comprises a pre-established number of palette values including a reserved palette value, the reserved palette value storing a linking value that associates the pixel map with the additional pixel map.

16. The method of claim 11 , further comprising reading m-bit color codes from the color palette.

17. The method of claim 11 , further comprising:

searching the first palette table for a particular m-bit color code and, if not located in the first palette table, searching the additional palette table for the particular m-bit color code; and

reading the n-bit color code from the first or additional palette table in which the m-bit color code is located.

18. The method of claim 11 , further comprising:

providing a usage bitmap representative of the graphic drawing space, the usage bitmap comprising pixel values representative of a transparency state of a corresponding pixel in the graphic drawing space, a non-transparent state for pixel values in the usage bitmap indicating usage of an associated color code in one of the palette tables;

after storing the pre-established number of n-bit color codes in each of (m/n)−1 palette tables, generating an (m/n th ) pixel map;

looking up a particular m-bit color value associated with non-transparent pixel locations in the usage bitmap; and

replacing palette values at the associated non-transparent pixel locations in the (m/n) pixel maps with m-bit color data, such that the m-bit color value is divided into (m/n) segments and each of the segments is respectively stored in the (m/n) pixel maps at the associated non-transparent pixel locations.

19. A system for compressing color data, comprising:

memory configured to support an expandable color palette for storing a pre-established number of n-bit color codes, each of the n-bit color codes mapping to an m-bit color value, wherein m is an integer greater than n; and

a processor, coupled to the memory, the processor storing up to the pre-established number of n-bit color codes in a first palette table of the color palette, expanding the color palette to include up to a specified number of additional palette tables for storing additional sets of the pre-established number of n-bit color codes, and storing a link value for associating the first palette table to one or more additional palette tables.

20. The system of claim 19 , wherein the pre-established number of n-bit color codes is characterized by 2 n −1 color codes.

21. The system of claim 19 , wherein the processor expands the color palette to include up to (m/n)−1 palette tables for storing sets of 2 n −1 color codes.

22. The system of claim 19 , wherein the processor generates up to (m/n) pixel maps and uses up to (m/n)−1 pixel maps to facilitate storing of the n-bit color codes in an associated palette table.

23. The system of claim 19 , wherein n=8 bits, m=32 bits, such that each palette table stores up to 255 8-bit color codes, and the color palette is expandable to up to 3 palette tables.

24. The system of claim 19 , further wherein the processor:

generates a first pixel map of the graphic drawing space, the first pixel map comprising palette values each representing an n-bit color code and a palette table identifier, the palette table identifier associating the first pixel map with the first palette table; and

generates up to a total of (m/n) pixel maps, each of (m/n)−1 pixel maps being associated with one of the additional palette tables.

25. The system of claim 24 , further wherein the processor:

generates a usage bitmap representative of the graphic drawing space, the usage bitmap comprising pixel values representative of a transparency state of a corresponding pixel in the graphic drawing space, a non-transparent state for pixel values in the usage bitmap indicating usage of an associated color code in one of the palette tables;

after storing the pre-established number of n-bit color codes in each of (m/n)−1 palette tables, generates an (m/n th ) pixel map;

performs a lookup of a particular m-bit color value associated with non-transparent pixel locations in the usage bitmap; and

replaces palette values at the associated non-transparent pixel locations in the (m/n) pixel maps with m-bit color data, such that the m-bit color value is divided into (m/n) segments and each of the segments is respectively stored in the (m/n) pixel maps at the associated non-transparent pixel locations.

26. The system of claim 19 , further wherein the processor:

provides a usage bitmap representative of the graphic drawing space, the usage bitmap comprising pixel values representative of a transparency state of a corresponding pixel in the graphic drawing space; and

writes a value indicative of a non-transparent state to pixel values in the usage bitmap having an associated color code in one of the palette tables.

27. The system of claim 19 , further wherein the processor reads color codes from the color palette.

28. The system of claim 19 , further wherein the processor:

searches the first palette table for a particular m-bit color value and, if not located in the first palette table, searches the additional palette tables for the particular m-bit color value; and

reads the n-bit color code from the first or additional palette tables in which the m-bit color value is located.

29. An information bearing medium comprising processor-readable instructions for compressing color data, the processor-readable instructions causing a processor to perform the steps of:

providing an expandable color palette for storing a pre-established number of n-bit color codes, each of the n-bit color codes mapping to an m-bit color value, wherein m is an integer greater than n;

storing up to the pre-established number of n-bit color codes in a first palette table of the color palette;

expanding the color palette to include up to a specified number of additional palette tables for storing additional sets of the pre-established number of n-bit color codes; and

providing a link for associating the first palette table to one or more additional palette tables.

30. The medium of claim 29 , wherein the pre-established number of n-bit color codes is characterized by 2 n −1 color codes.

31. The medium of claim 29 , wherein expanding the color palette comprises expanding the color palette to include up to (m/n)−1 palette tables for storing sets of 2 n −1 color codes.

32. The medium of claim 29 , wherein storing the color codes further comprises providing up to (m/n) pixel maps, the method further comprising using up to (m/n)−1 pixel maps to facilitate storing of the n-bit color codes in an associated palette table.

33. The medium of claim 29 , wherein n=8 bits, m=32 bits, such that each palette table stores up to 255 8-bit color codes, and the color palette is expandable to up to 3 palette tables.

34. The medium of claim 29 , further comprising:

providing a first pixel map of the graphic drawing space, the first pixel map comprising palette values each representing an n-bit color code and a palette table identifier, the palette table identifier associating the first pixel map with the first palette table; and

generating up to a total of (m/n) pixel maps, each of (m/n)−1 pixel maps being associated with one of the additional palette tables.

35. The medium of claim 34 , further comprising:

providing a usage bitmap representative of the graphic drawing space, the usage bitmap comprising pixel values representative of a transparency state of a corresponding pixel in the graphic drawing space, a non-transparent state for pixel values in the usage bitmap indicating usage of an associated color code in one of the palette tables;

after storing the pre-established number of n-bit color codes in each of (m/n)−1 palette tables, generating an (m/n th ) pixel map;

looking up a particular m-bit color value associated with non-transparent pixel locations in the usage bitmap; and

replacing palette values at the associated non-transparent pixel locations in the (m/n) pixel maps with m-bit color data, such that the m-bit color value is divided into (m/n) segments and each of the segments is respectively stored in the (m/n) pixel maps at the associated non-transparent pixel locations.

36. The medium of claim 29 , further comprising:

providing a usage bitmap representative of the graphic drawing space, the usage bitmap comprising pixel values representative of a transparency state of a corresponding pixel in the graphic drawing space; and

writing a value indicative of a non-transparent state to pixel values in the usage bitmap having an associated color code in one of the palette tables.

37. The medium of claim 29 , further comprising reading color is codes from the color palette.

38. The medium of claim 29 , further comprising:

searching the first palette table for a particular m-bit color value and, if not located in the first palette table, searching the additional palette tables for the particular m-bit color value; and

reading the n-bit color code from the first or additional palette tables in which the m-bit color value is located.

Assignments (4)
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED ON REEL 037593 FRAME 0641. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME TO AN ASSIGNMENT. Recorded Feb 22, 2016
From: RICOH PRODUCTION PRINT
To: RICOH COMPANY, LTD.
Reel/Frame 037868/0632 →
CHANGE OF NAME Recorded Jan 26, 2016
From: RICOH PRODUCTION PRINT
To: RICOH COMPANY, LTD.
Reel/Frame 037593/0641 →
CHANGE OF NAME Recorded Jan 26, 2016
From: INFORPRINT SOLUTIONS COMPANY, LLC
To: RICOH PRODUCTION PRINT SOLUTIONS LLC
Reel/Frame 037593/0888 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 6, 2007
From: INTERNATIONAL BUSINESS MACHINES CORPORATION, A NEW YORK CORPORATION; IBM PRINTING SYSTEMS, INC., A DELAWARE CORPORATION
To: INFOPRINT SOLUTIONS COMPANY, LLC, A DELAWARE CORPORATION
Reel/Frame 019649/0875 →