The invention relates to color image rendering, including a raster image operation as between a color space associated with a projected image and a color space associated with printed media.
Printer control language (PCL) logical operations are typically defined in a red, green, blue (RGB) device color space. The logical operations are stored in a macro table or raster operation (ROP) table that may hold a fixed number of entries. Some ROP tables include 256 entries.
For a RGB printer, native color rendering in PCL color provides color rendering from an input RGB color space to a device RGB color space. RGB halftoning is applied first, followed by the logical operations. Next, bits associated with the RGB colors are inverted to prepare the image for printing in a CMY color space.
For a CMYK printer, color management modules are used to convert the RGB input color directly to the CMYK printer color. Halftoning, as well as the logical operations, are performed in the CMYK color space.
Certain raster operations performed in RGB color space may be incompatible with raster operations performed in CMY color space. Raster operations performed in the CMY space slow down overall color rendering processes. Furthermore, logical operations performed for CMYK ROP may introduce K handling issues such as over-saturation, leading to poor image quality or wasted toner.
The present invention addresses these and other problems associated with the prior art.
A conversion table includes a conversion index number corresponding to a logical operation identified in a raster table. The conversion index number provided in the conversion table is mapped from a reference index number provided in the raster table, wherein the reference index number is associated with a raster image operation of one or more RGB operands defined in a first color space. The logical operation may be performed on one or more operands defined in a second color space.
An improved system for selecting a raster image operation is herein disclosed. A raster macro table includes a reference index number representing a first logical operation of one or more RGB operands in a first color space. A lookup table includes a conversion index number representing a second logical operation of one or more operands in a second color space. The reference index number is mapped to the conversion index number, where a designation of the reference index number results in an application of the second logical operation rather than, and different from, the first logical operation.
An improved method for selecting a raster image operation is herein disclosed. The method includes selecting a reference index number corresponding to a first logical operation associated with a first set of operands, and mapping the reference index number to a conversion index number, where the conversion index number corresponds to a second logical operation different than the first logical operation. The method further includes operating on a second set of operands according to the second logical operation, wherein the first set of operands is associated with a first color space, and the second set of operands is associated with a second color space.
The invention will become more readily apparent from the following detailed description of a preferred embodiment of the invention which proceeds with reference to the accompanying drawings.
Printing a graphic image can be complicated. Images which are displayed on computer monitors or otherwise projected for human perception may be defined by a first color space. Monitors provide an exceptionally large range of hue, saturation and intensity of the colors displayed. For example, it is not uncommon for monitors to have the capability of providing 32 bits worth of color data. Color space models for projected images typically include tuples of numbers, such as red, green and blue, otherwise known as the RGB color space. In the RGB color space, red, green and blue are often each represented by an 8 bit range of color variation.
Graphic devices such as printers, on the other hand, typically include but 3 or 4 bits worth of color variation. Although color space models for printers may also include tuples of numbers, and in some cases the addition of black, each of the tuples are limited to bitonal representation of 1 bit. That is, either on or off. Printed images are often defined by a cyan, magenta and yellow (CMY) color space. Some printers include a separate toner for black (K), in which case the images may be defined by a CMYK color space.
Printed images also differ greatly from projected images by the way color is perceived by a human observer. A monitor uses a color space defined by an additive model, that is, where red green and blue are added together to create different colors. Printed images, on the other hand, us a color space that is defined by a subtractive model, that is, where a person observes only those colors which are not absorbed by the printed images.
A pattern 2 is shown as included a pattern of alternating circles or dots. The pattern 2 may not have any color associated with it, rather is may provide only a structure or geometry. In one embodiment, the pattern 2 is designated by black, such that the circles are black dots. A foreground color 4 may be combined with the pattern 2 to provide the pattern 2 with a designated color, namely the foreground color 4. A logical OR operation may be performed, such that combining the pattern 2 with the foreground color 4 results in a texture 5. Texture 5 is shown as including the dots of the pattern 2 having a color defined by the foreground color 4. The space around and between the dots may not have any color associated with it, or it may be designated as white.
The pattern 2 may be identified as being transparent or opaque. Using an 8-bit numbering convention, the pattern 2 may be defined as including black dots designated by the color tuple (0,0,0) surrounded by white space designated by the color tuple (255,255,255). The foreground color 4 may be designated by a color tuple such as (0,255,255), which in an RGB color space designates cyan. Assuming the pattern 2 is defined as being transparent, performing the OR logical operation on the pattern 2 and foreground color 4 results in the area within the circles or dots becoming cyan (0,255,255) in the resultant texture 5. Assuming the white area is defined as being opaque, the white area may remain white (255,255,255) regardless of the logical operation.
A source image 10 is shown as including a square surrounded by white. The square may be designated as black (0,0,0) or some other color tuple. Similarly, the area around the square may be some tuple other than white. A destination image 15 is shown as being a uniform color throughout. A logical operation may be performed on the texture 5, source image 10 and the destination image 15 that results in a new destination or resulting image 20. The logical operation may include one or more of the following functions of AND, OR, NOT and XOR.
The texture 5, the source image 10 and the destination image 15, may be referred to collectively as operands. The three operands may be identified as T, S and D, respectively. Where the operands are defined by the RGB color space, they may be referred to as RGB operands. Similarly, where the resulting image 20 is defined by the RGB color space, it may be referred to as an RGB image.
The texture 35, the source image 40 and the destination image 45, may be referred to collectively as operands. The three operands may be identified as T, S and D, respectively. Where the operands are defined by the CMY color space, they may be referred to as CMY operands. Similarly, where the resulting image 30 is defined by the CMY color space, it may be referred to as a CMY image.
The CMY texture 35 may be defined similar to the RGB texture 5 of
A logical operation may be performed on the CMY texture 35, the CMY source image 40 and the CMY destination image 45 that results in a new destination image or resulting CMY image 30. The logical operation may include one or more of the following functions of AND, OR, NOT and XOR.
In one embodiment, the lookup table 50 includes 256 entries. The first entry of the lookup table 50 is identified by an index number or reference number RN-0 in the list of index numbers 70, corresponding to a lookup number RN-255 in the list of lookup numbers 80. The last entry of the lookup table 50 is identified by reference number RN-255, corresponding to the lookup number RN-255
The number of entries in the lookup table 50 and the raster table 60 of
The lookup table 50 may be used to lookup, convert or map a first logical operation associated with one of the index number 70 with a second logical operation associated with one of the lookup numbers 80. For example, the first entry in the lookup table 50 identified as reference number RN-0 is associated with a lookup number RN-255. The raster table 60 associates a first logical operation of 0 (BLACK) with the reference number RN-0. The raster table 60 associates a second logical operation of 1 (WHITE) with the reference number RN-255.
The index numbers 70 may be generated by performing combinations of logical operations on the operands. By convention the operand T for texture may be assigned an 8 bit number of 111000. Operand S for source image may be assigned an 8-bit number of 11001100. Also, by convention, operand D for destination image may be assigned an 8-bit number of 1111100. Performing multiple combinations of the logical functions AND, OR, NOT and XOR on the operands T, S and D may result in 256 logical operations. Logical operations 90 shown in
For example the logical operation of source image AND (texture OR destination image), abbreviated as SDToa provides a decimal result of 200 when operating on the 8-bit convention numbers designated above. According to the above convention, the reference number 200 in raster table 60 may therefore be assigned to the logical operation SDToa. Other combinations of logical functions and operands may be performed to determine other corresponding assignments between the index numbers 70 and the logical operations 90 in raster table 60.
Depending on the rendering method selected, the raster operation (ROP) may be performed on the RGB image 20 or on the CMY image 30. Where the raster operation is performed in RGB space, the logical operations 90 may be selected directly from the raster table 60. For example, reference number 252 may be selected from the list of index numbers 70 to operate on the RGB image 20. Reference number 252 corresponds to logical operation TSo.
By way of example, assume that the RGB texture 5 of
Where the raster operation is performed in the CMY space, the logical operations 90 may be selected with the assistance of the lookup table 50. The lookup table 50 includes a conversion index numbers or lookup numbers 80 corresponding to the logical operations 90 identified in the raster table 60. For example, lookup number RN-192 corresponds to the logical operation TSa. The logical operation TSa corresponding to lookup number RN-192 is used to operate on the one or more CMY operands defined in a second color space, namely the CMY color space.
After an initial selection of logical operation TSo corresponding to reference number RN-252 in the above RGB space example, the lookup table 50 maps the reference number RN-252 to lookup number RN-192. Lookup number RN-192 corresponds to the logical operation TSa. Whereas the logical operation TSo was used during the raster operation in the RGB color space, the logical operation TSa is selected during a raster operation in the CMY color space.
The logical operation of the one or more operands in the second color space is equivalent to the raster image operation performed on the one or more RGB operands. Performing the logical operation TSa on the operated-on operands of the CMY color space provides the resultant bits of (1,0,0) on a white background (0,0,0). This is the same result as obtained by applying the logical operation of TSo in the RGY color space.
The lookup table 50 thereby provides a means of utilizing the raster table 60 and the logical operations 90 contained therein to perform a raster operation in the CMY color space. The raster operation may be performed in the CMY color space either before or after any color halftoning operation.
The lookup table 50 may be generated prior to any raster operation and stored in a database. The database may include both the lookup table 50 and the raster table 60. The ROP processor 100 of
Using the previous example including the RGB color tuple of (0,1,1) for the RGB texture 5 of
The RGB operands are operated on to bitwise invert the RGB color tuples to produce a CMY color tuple of (1,0,0) corresponding to a CMY texture 35 of
A reference index number, such as reference number RN-240 including a single operand is mapped to itself through a conversion index number, such as lookup number RN-240.
A reference index number, such as reference number RN-255, associated with a white image maps to a conversion index number, such as lookup number RN-0 associated with a black image.
A reference index number, such as reference number RN-0, associated with a black image maps to a conversion index number, such as lookup number RN-255, associated with a white image.
A reference index number, such as reference number RN-238, including the logical function OR is mapped to a conversion index number, such as lookup number RN-136, that replaces OR with AND.
A reference index number, such as reference number RN-192, including the logical function AND is mapped to a conversion index number, such as lookup number RN-252, that replaces AND with OR.
A reference index number, such as reference number RN-51, including a logical function of a single NOT is mapped to itself through a conversion index number, such as lookup number RN-51.
A reference index number, such as reference number RN-90, including a logical function of XOR is mapped to a conversion index number, such as lookup number RN-165, which inverts the XOR logical function.
In one embodiment, a system such as the ROP system of
At line 715, a logical operation of S1 and D1 (S1D1a) is performed on the source image S1 and the destination image D1. Performing the logical operation S1D1a in the CMY color space provides the resultant color tuple of (1,0,0), which identifies cyan C. However, if the logical operation is performed on the CMYK color space, it is noticed that the resultant color values are (0,0,0,0), which identifies white. The results performing the logical operation of S1D1a in the CMY and CMYK color spaces are incompatible.
Performing the logical operation of S1 and D1′ (S1D1′a) at line 730 provides the resultant bits of (1,0,0,0). Color value (1,0,0,0) may be understood as identifying the color cyan in the CMYK color space. The logical operation of S1D1′a in the CMY color space, see line 730, results in the CMY color tuple of (1,0,0). As previously discussed with respect to line 715 of
At line 745, a logical operation of S2 and D2 (S2D2a) is performed on the source image S2 and the destination image D2. Performing the logical operation S2D2a in the CMY color space provides the resultant color tuple of (1,1,1), which identifies black. If the logical operation is performed on the CMYK color space, the resultant color values are (0,0,0,1), which also identifies black. The results of performing the logical operation of S2D2a in the CMY and CMYK color spaces are compatible.
Performing the logical operation of S2′ and D2′ (S2′D2′) at line 760 provides the resultant bits of (1,1,1,1). As previously discussed, the logical operation S2D2a performed on the original CMYK color values at line 745 of
The improved process illustrated by
Performing the logical operation of S1 and D2′ (S1D2′a) at line 795 provides the resultant bits of (1,0,0,0). Color value (1,0,0,0) may be understood as identifying the color cyan in the CMYK color space. The logical operation of S1D2′a in the CMY color space, see line 795, results in the CMY color tuple of (1,0,0). As previously discussed with respect to line 715 of
At operation the reference index number is mapped to a conversion index number, where the conversion index number corresponds to a second logical operation different than the first logical operation. The conversion index number may be identified from a list of conversion numbers, such as lookup numbers 80 of
At operation 830 a second set of operands is operated on according to the second logical operation, the first set of operands being associated with a first color space, and the second set of operands being associated with a second color space.
In one embodiment, performing the first logical operation on the first set of operands in the first color space provides a same raster image operation result as performing the second logical operation on the second set of operands in the second color space.
At operation 910 the CMY components are recovered from K in an under color removal operation. For example, where one or more of the CMY components or bits were previously disabled or turned off (0), they may now all be enabled or turned on (1) when recovered from an enabled K component.
At operation 920 the K component is zeroed out prior to operating on the second set of operands. If the K component was previously enabled or turned on (1), then it would be disabled or turned off (0) when its associated bit or bits are inverted.
At operation 930 the second set of operands are operated on. The second set of operands are operated on according to a logical operation, for example one of the logical operations 90 identified in raster table 60 of
At operation 940 the K component is recovered in a post under color removal operation after operating on the second set of operands. If the CMY components are all enabled or turned on (1), then this results in a color tuple of (1,1,1). In the CMYK space, this is equivalent to (1,1,1,0). In this case, the K component may be recovered from the CMY components by enabling or turning on the K component. This may be shown by CMYK color values (0,0,0,1) where the CMY components have been disabled or set to (0). The improved method provides compatible color rendering between the CMY and CMYK color spaces without introducing over-saturation.
In one embodiment, performing the first logical operation on the first set of operands in the first color space provides a same raster image operation result as performing the second logical operation on the second set of operands in the second color space.
The system described above can use dedicated processor systems, micro controllers, programmable logic devices, or microprocessors that perform some or all of the operations. Some of the operations described above may be implemented in software and other operations may be implemented in hardware.
For the sake of convenience, the operations are described as various interconnected functional blocks or distinct software modules. This is not necessary, however, and there may be cases where these functional blocks or modules are equivalently aggregated into a single logic device, program or operation with unclear boundaries. In any event, the functional blocks and software modules or features of the flexible interface can be implemented by themselves, or in combination with other operations in either hardware or software.
Having described and illustrated the principles of the invention in a preferred embodiment thereof, it should be apparent that the invention may be modified in arrangement and detail without departing from such principles. We claim all modifications and variation coming within the spirit and scope of the following claims.