Abstract:
A color conversion apparatus and a method of color conversion are described for converting a first color in a first color space to a second color in a second color space. The color conversion apparatus includes a plurality of lookup tables storing color mappings relating the first color space to the second color space and a converter using the lookup tables to convert the first color to the second color. The first color space is the sRGB color space and the second color space is a device dependent color space, or vice versa. To reduce the table size, tables having little effect on the second color contain groups of input colors mapping to a same output color and are implemented with a memory having the address inputs connected to the upper most significant bits of an incoming color value. A gamma correction circuit is used to calculate the remaining tables.

Description:
BACKGROUND OF INVENTION 
   1. Field of the Invention 
   The invention relates to color conversion of display devices, and more particularly, to an apparatus for converting a first color in a first color space to a second color in a second color space and a method thereof. 
   2. Description of the Prior Art 
   Graphic systems convert image signals into a visible form and vice versa. Examples of common graphic systems include: cathode-ray tube (CRT) monitors, liquid crystal display (LCD) monitors, projection displays, digital cameras, scanners, camcorders, printers, etc. Different graphic systems have different image signal requirements meaning that the image signals for a particular graphic system are not necessarily compatible with other graphic systems. For example, the image signal format used in a digital overhead projector is not the same image signal format used in a printer. Even among graphic systems that both use RGB image signals, such as two LCD monitors, because each monitor has different display characteristics, the image signals producing a particular color on one monitor do not necessarily produce the identical color on another monitor. The particular display characteristics for a graphic system are also referred to as the device color space. Difficulties arise when trying to accurately reproduce color across open systems having different devices using different color spaces. Particularly with the advent of the Internet, it is imperative that all graphic systems exchange color information accurately and easily. 
   The International Color Consortium (ICC) has proposed a solution to the problem of communicating color in open systems, which involves attaching a profile for the input color space to the image file in question. This is appropriate for high end users but there are a broad range of users that do not require this level of flexibility and control. Additionally, most existing file formats do not support color profile embedding and, in fact, there are many applications that oppose appending any extra data to data files. 
   The standard default RGB color space (sRGB) developed by Hewlett-Packard and Microsoft provides a single RGB representation of color independent of the graphic system and has been standardized by the International Electrotechnical Commission (IEC) as IEC 61966-2-1. When using the sRGB specification, RGB values in the sRGB color space must be mapped to a corresponding RGB value in the destination color space and vice versa. Performing a mapping involves executing a matrix multiplication to adjust a first color value in the first color space to a second color in a second color space. 
     FIG. 1  shows the sRGB conversion formula  10  for mapping an sRGB value (R, G, B) to a destination dependent color space value (R′,G′, B′) according to the sRGB specification. As shown in  FIG. 1 , the second red value R′ is formed using a portion of the first red value R, the first green value G, and the first blue value B depending on the adjustment coefficients r 1 , g 1 , and b 1  respectively. Similarly, the second green value G′ and the second blue value B′ are both formed using a portion of the first red value R, the first green value G and the first blue value B. The sRGB values are stored as 8 bit integers and the adjustments coefficients are stored as 10-bit floating-point values. Using standard matrix multiplication, the following formulas for the R′, G′, and B′ values are derived:
   R ′=( R*r   1 + G*g   1 + B*b   1 )   G ′=( R*r   2 + G*g   2 + B*b   2 )   B ′=( R*r   3 + G*g   3 + B*b   3 ) 
   To calculate the second red value R′, the first RGB values are first converted to floating-point values:
 
 R   float   =R /255.0
 
 G   float   =G /255.0
 
 B   float   =B /255.0
 
   A multiplier then multiplies the R float , G float , and B float  with the first red adjustment coefficient r 1 , the first green adjustment coefficient g 1 , and the first blue adjustment coefficient b 1  respectively and adds the multiplication results together. The second floating-point red value is then converted back to an 8-bit integer and similar procedures are followed for the G′ and the B′ values. The following formulas show the full process and can be computed concurrently if sufficient hardware resources are available:
 
 R ′=round(255.0 *[r   1   *R   float   +g   1   *G   float   +b   1   *B   float ])
 
 G ′=round(255.0 *[r   2 * R   float   +g   2   *G   float   +b   2   *B   float ])
 
 B ′=round(255.0 *[r   3 * R   float   +g   3   *G   float   +b   3   *B   float ])
 
   In today&#39;s competitive consumer electronic marketplace, the performance of graphic systems must be as high as possible while keeping the price as low as possible. In other words, the conversion from a first color space to a second color space needs to be executed as fast as possible and with minimal hardware requirements. However, the conversions from integer to floating point, the conversions from floating point to integer, and the multiplications all require non-trivial processing time and specialized hardware. An efficient and cost effective implementation is needed. 
   SUMMARY OF INVENTION 
   It is therefore a primary objective of the claimed invention to provide a method and apparatus for color conversion having high-speed and minimal hardware, to solve the above-mentioned problems. 
   According to the claimed invention, a color conversion apparatus is disclosed for converting a first color space to a second color space, wherein both the first and the second color space at least include a first color element and a second color element. The color conversion apparatus comprises a look-up-table for storing a relationship between the first color space and the second color space and a converter for converting the first color space to the second color space according to the relationship stored in the look-up-table. 
   According to the claimed invention, a method of color conversion is disclosed for converting a first color space to a second color space, wherein both the first and the second color space at least include a first color element and a second color element. The method comprises providing a look-up-table for storing a relationship between the first color space and the second color space, and converting the first color space to a second color space according to the relationship stored in the look-up-table. 
   These and other objectives of the claimed invention will no doubt become obvious to those of ordinary skill in the art after reading the following detailed description of the preferred embodiment that is illustrated in the various figures and drawings. 

   
     BRIEF DESCRIPTION OF DRAWINGS 
       FIG. 1  is the sRGB conversion formula according to the prior art. 
       FIG. 2  is a lookup table for implementing the G*g 1  multiplication according to the present invention. 
       FIG. 3  is a diagram showing the lookup table of  FIG. 1  implemented with a 32-byte memory. 
       FIG. 4  is a first embodiment of a color conversion apparatus of the present invention. 
       FIG. 5  is a second embodiment of a color conversion apparatus of the present invention. 
       FIG. 6  is a third embodiment of an LCD color conversion apparatus of the present invention. 
       FIG. 7  is a flowchart describing the method of color conversion according to the present invention. 
   

   DETAILED DESCRIPTION 
   According to the present invention, a lookup table is used to replace the hardware circuit for calculating each multiplication in the formula  10  shown in  FIG. 1 . For example, the multiplication of R with the adjustment coefficient r 1  can be replaced with a 256-element lookup table. The lookup table is indexed with the R-value and maps to the result of the multiplication of R with the adjustment coefficient r 1 . The lookup table can be implemented with a 256-byte memory having the address inputs connected to the R-value and the value stored at each address being the result of R*r 1  for all values of R. This implementation runs much faster than a hardware multiplier and eliminates the need for specialized conversion and multiplication hardware. The disadvantage of a 256-element lookup table is that nine 256-byte memories are required, one for each multiplication by an adjustment coefficient. 
     FIG. 2  shows a simplified lookup table  12  for implementing the G*g 1  multiplication. Although, the second red value R′ is affected by the first red value R, the first green value G, and the first blue value B; in actual practice, the first green value G and the first blue value B have a very small effect on the second red value R′. This means that the lookup tables for the adjustment coefficients g 1  and b 1  can be simplified. As shown in  FIG. 2 , first green values G are grouped together and the members of each group return the same result for the multiplication of G*g 2 . For example, G-values belonging to the set of {0, 1, 2, 3, 4, 5, 6, 7} all return the same output value g 1 [ 0 ]. Although mathematically incorrect, this approximation is justified due to the insignificant difference between the different members of each group and the small overall effect of the first green value G on the second red value R′. Similar simplified lookup tables are used for the other low effect adjustment coefficients b 1 , r 2 , b 2 , r 3 , and g 3 . 
   Additionally, it should be mentioned that although  FIG. 2  shows groups of eight first green values G, depending on different destination color spaces, other group sizes can also be used. If, for a particular destination color space, the first green value G has a greater effect on the second red value R′, the g 1  lookup table can have smaller groups of G-values. Smaller groups of G values increases the resolution of the g 1  lookup table at the cost of increased table size. Likewise, if the first green value G has an even smaller effect on the second red value R′, the g 1  lookup table can have larger groups of G values. The group sizes for the other lookup tables b 1 , r 2 , b 2 , r 3 , and g 3  can also be adjusted to reflect their actual effect on the second color value. 
     FIG. 3  shows a schematic diagram  20  of the lookup table of  FIG. 2  implemented with a 32-byte memory  22 . The memory  22  has a 5-bit address input having an MSB of A 4  and an LSB of A 0 , and an 8-bit data output having an MSB of D 7  and an LSB of D 0 . The first green value G is an 8-bit value having an MSB of G 7  and an LSB of G 0  and the top five most significant bits (G 7  to G 3 ) are connected to the memory 22 address inputs (A 4  to A 0 ) respectively. Based on the address, the memory  22  returns the result of the multiplication of G*g 1 , which is stored at the particular address location. By not using the least significant bits of the first green value G, the G-values are effectively grouped into groups of eight as in  FIG. 2 . 
   As stated earlier, the second red value R′ is primarily determined by the first red value R. In fact, the color conversion between the first red value R and the second red value R′ can be accomplished through gamma correction. Similarly the second green value G′ is primarily determined by the gamma correction of the first green value G and the second blue value B′ is primarily determined by the gamma correction of the first blue value B. To further simply the implementation, the multiplications by the adjustment coefficients r 1 , g 2 , and b 3  in  FIG. 1  can be directly replaced with the result of a gamma correction circuit. Gamma correction accounts for the non-linear detection of luminance by the human eye under different light conditions. As gamma correction is well known in the art, further description of the actual gamma correction circuit is herby omitted. 
     FIG. 4  shows a first embodiment of a color conversion apparatus  30  of the present invention. The color conversion apparatus  30  converts a first color having red, green, and blue values (R, G, B) in a first color space to a second color having second red, green, and blue values (R′, G′, B′) in a second color space. The color conversion apparatus  30  includes a gamma correction circuit  32 , a g 1  lookup table  34 , a b 1  lookup table  36 , an r 2  lookup table  38 , a b 2  lookup table  40 , an r 3  lookup table  42 , a g 3  lookup table  44 , a first adder  46 , a second adder  48 , and a third adder  50 . Each of the lookup tables  34 ,  36 ,  38 ,  40 ,  42 ,  44  is implemented with a 32-byte memory as shown in  FIG. 3 . The first red value R is connected to the gamma correction circuit  32 , the r 2  lookup table  38 , and the r 3  lookup table  42 . The first green value G is connected to the gamma correction circuit  32 , the g 1  lookup table  34 , and the g 3  lookup table  44 . Finally the first blue value B is connected to the gamma correction circuit, the b 1  lookup table  36 , and the b 2  lookup table  40 . The output of the g 1  lookup table  34 , which is the result of the multiplication of G*g 1 ; the output of the b 1  lookup table  36 , which is the result of the multiplication of B*b 1 ; and the gamma corrected R-value r 1 -gamma are added together by the first adder  46 . The output of the first adder  46  is the second red value R′. The second adder  48  adds together the output of the r 2  lookup table  38 , which is the result of the multiplication of R*r 2 ; the output of the b 2  lookup table  40 , which is the result of the multiplication of B*b 2 ; and the gamma corrected G-value g 2 -gamma to produce the second green value G′. Similarly, the third adder  50  adds together the output of the r 3  lookup table  42 , which is the result of the multiplication of R*r 3 ; the output of the g 3  lookup table  44 , which is the result of the multiplication of G*g 3 ; and the gamma corrected B-value b3-gamma to produce the second green value B′. 
     FIG. 5  shows a second embodiment of a color conversion apparatus  51  of the present invention. The color conversion apparatus  51  converts a first color having red, green, and blue values (R, G, B) in a first color space to a second color having second red, green, and blue values (R′, G′, B′) in a second color space. The color conversion apparatus  51  includes a g 1  lookup table  52 , a b 1  lookup table  54 , an r 2  lookup table  56 , a b 2  lookup table  58 , an r 3  lookup table  60 , a g 3  lookup table  62 , a first adder  64 , a second adder  66 , a third adder  68 , and a gamma correction circuit  70 . Each of the lookup tables  52 ,  54 ,  56 ,  58 ,  60 ,  62  is implemented with a 32-byte memory as shown in  FIG. 3 . The first red value R is connected to the r 2  lookup table  56  and the r 3  lookup table  60 . The first green value G is connected to the g 1  lookup table  52  and the g 3  lookup table  62 . Finally the first blue value B is connected to the b 1  lookup table  54  and the b 2  lookup table  58 . The output of the g 1  lookup table  52 , which is the result of the multiplication of G*g 1 , and the output of the b 1  lookup table  54 , which is the result of the multiplication of B*b 1 , are added together by the first adder  64 . The second adder  66  adds together the output of the r 2  lookup table  56 , which is the result of the multiplication of R*r 2 , and the output of the b 2  lookup table  58 , which is the result of the multiplication of B*b 2 . Similarly, the third adder  68  adds together the output of the r 3  lookup table  60 , which is the result of the multiplication of R*r 3 , and the output of the g 3  lookup table  62 , which is the result of the multiplication of G*g 3 . The output of the first adder  64  (R″), the second adder  66  (G″), and the third adder  68  (B″) are connected to the gamma correction circuit  70  and the output of the gamma correction circuit  70  is the second color value comprising the second red value R′, the second green value G′, and the second blue value B′. 
     FIG. 6  shows a third embodiment of an LCD color conversion apparatus  80  of the present invention. The LCD color conversion apparatus  80  includes an A/D converter  82 , a converter  84 , a plurality of color lookup tables  86 , a gamma correction circuit  88 , a D/A converter  90 , an amplifier  92 , and an LCD display  94 . The converter  84 , the plurality of color lookup tables  86 , and the gamma correction circuit  88  form a color conversion apparatus  76 , which can be implemented as shown in  FIG. 4  or  FIG. 5 . A first color having red, green, and blue components in the sRGB color space is converted to 8-bit digital form by the A/D converter  82 . The converter  84  uses the plurality of lookup tables  86  and the gamma correction circuit  88  to convert the incoming color in the sRGB color space to a corresponding color in the color space of the LCD display  94 . The output of the converter  84  is connected to the D/A converter  90 , which converts the corresponding color to analog RGB signals. The analog RGB signals are amplified by the amplifier  92  and drive the LCD display  94 . 
     FIG. 7  shows a flowchart  100  describing the method of color conversion according to the present invention. The flowchart  100  describes the method for converting a first color having red, green, and blue values (R, G, B) in a first color space to a second color having second red, green, and blue values (R′, G′, B′) in a second color space and includes the following steps: 
   Step  102 : Provide a plurality of color lookup tables for the multiplications by the adjustment coefficients r 2 , r 3 , g 1 , g 3 , b 1 , and b 2 . The lookup tables provide the multiplication of R*r 2 , R*r 3 , G*g 1 , G*g 3 , B*b 1 , and B*b 2  respectively, as required by the sRGB conversion formula  10  shown in  FIG. 1 . 
   Step  104 : Minimize the lookup table sizes by grouping similar input colors. Because there is very little numerical difference between the adjacent input colors and a very small overall effect on the second color, each lookup table is reduced in size by lowering the number of output values. Similar input colors values are grouped together and mapped to the same multiplication result in each lookup table. A memory can be used to implement each lookup table, the address inputs of the memory being connected to the upper most significant bits of the input color. With 8-bit RGB values, if groups of eight input colors map to the same output value, the lookup table implementation is reduced from a 256-byte memory to a 32-byte memory with no adverse effect on color conversion performance. 
   Step  106 : Use a gamma correction circuit to calculate the adjustment coefficients r 1 , g 2 , and b 3 . Because the gamma correction of the first color value is the primary cause of adjustment on the second color value, the multiplications by r 1 , g 2 , and b 3  are directly replaced with the result of the gamma correction circuit. By using the gamma correction circuit, three lookup tables are eliminated and the overall design is simplified. 
   Those skilled in the art will readily observe that numerous modifications and alterations of the device may be made while retaining the teachings of the invention. Accordingly, that above disclosure should be construed as limited only by the metes and bounds of the appended claims.