As used herein, the phrase “printer” refers to any device that includes a printing function. Thus, for example, the phrase “printer” may refer to an inkjet printer, a laser printer, a commercial printing press, a multifunction peripheral (MFP) that includes a printing function, etc. The phrase “color printer” refers to any type of printer that can generate color printed output.
Two printers may reproduce an original color differently and sometimes this can create a problem for the user. For example, in a commercial printing setting, a user may have been historically using a first color printer (printer “A”) to print documents for a customer. The customer is satisfied with the way printer “A” reproduces a particular original color, such as a color in a company logo, for example. The user may now wish to use a second color printer (printer “B”) to print documents for the same customer. Printer “B”, however, reproduces the particular original color differently than printer “A” and, as a result, the customer is dissatisfied.
The reader will note that the customer may be dissatisfied even if printer “B” reproduces the original color with higher accuracy as compared to printer “A”. Possible reasons for this possibility are that the customer has grown accustomed and/or subjectively prefers the way printer “A” reproduces the original color.
With reference to
The host computer 104 includes a central processing unit (CPU) 114, a memory 116, a keyboard 118, a computer mouse 120 and a display monitor 122. The display monitor 122 enables the host computer 104 to display a graphical user interface (GUI) to a user 124, as is described further below. The keyboard/mouse 118, 120 enable the user 124 to provide input to the host computer 104.
Stored in the host memory 116 is a host application 126, a print driver 128 and a document file 130. The host application 126 enables the host computer 104 to function as is described below in conjunction with
The color measurement device 108 may represent any device that can measure color at different locations on a printed medium (e.g., print medium 132) and that can output these measurements to the host computer 104. According to one specific implementation, for example, the color measurement device 108 is a handheld calorimeter that is connected to the host computer 104 via a communication cable. In such an implementation, the handheld colorimeter may output color measurements to the host computer 104 in the form of Commission International de l'Eclairage (CIE) XYZ tristimulus values, for example.
The network printer 106 is, in this example embodiment, a laser printer that uses an electrophotographic process to generate color printed output. As is discussed further below, the network printer 106 provides a web service 136. As is also discussed below, the host application 126 can interact with the web service 136 over the network 110.
Also shown in
The I/O port 202 generally enables the network printer 106 to connect as well as communicate over the network 110. The mass storage area 204 generally provides the network printer 106 with the ability to store data, such as described below. According to one implementation, the mass storage area 204 may represent a magnetic and/or an optical disc storage drive.
The print engine 208 includes various components to implement an electro-photographic process to generate color printed output. In this example we will assume that the print engine 208 implements the electro-photographic process in part by transferring four different colors (in the form of colored toner) to a print medium. These colors are Cyan (C), Magenta (M), Yellow (Y) and Black (K). Accordingly, CMYK image data is used to drive the print engine 208.
The control system 206 generally controls the operation of the network printer 106 to generate printed output and to provide the printer web service 136. In this example, the control system 206 includes programming (web service programming 210) that can be executed by the control system 206 to provide the web service 136 using a client/server model.
Additionally, the control system 206 includes an image pipeline 212 for processing input image data received from a source (e.g., a host print driver) into CMYK data that is suitable to drive the print engine 208. The image pipeline 212 may be implemented in any suitable hardware, software and/or firmware, for example.
It is noted that both the CMYK-CMYK conversion 308 and the RGB-CMYK conversion 320 may account specifically for the particular characteristics of the selected media type 305. Accordingly, and as appreciated by a person skilled in the art, the image pipeline 212 may apply a different CMYK-CMYK conversion or a different RGB-CMYK conversion respectively if another media type is selected.
For the following discussion we will assume that the behavior of the image pipeline 212 is known to the extent that a first “reverse transform” 340(a) has been defined for the color conversions depicted in
Thus, for example, assuming the color measurement 342 describes the printed color 344 perfectly and the first reverse transform 340(a) models the current behavior of the image pipeline 212 perfectly, the hpRGB color 346(a) that is outputted by the first reverse transform 340(a) should match the hpRGB color 346(b). The hpRGB color 346(b) being the actual hpRGB color that would need to be applied as an input to the RGB/CMYK conversion 320 in order for the printer 106 to output the printed color 344 on the selected media type 305.
Thus, assuming the color measurement 342 describes the printed color 344 perfectly and the second reverse transform 340(b) models the behavior of the image pipeline 212 perfectly, the CMYK color 348(a) should match the CMYK color 348(b) that would be generated by the CMYK/CMYK conversion 308 in order for the printer 106 to output the printed color 344 on the selected media type 305.
The use of these two reverse transforms 340(a), 340(b) are describe below.
As indicated in
We will further assume that the reference printer 140 has previously been used to print the document file 130 thereby generate a printed page 130(b). For ease of discussion, we will refer to the printed page 130(b) as the “reference printed page 130(b)”.
As shown, the reference printed page 130(b) includes a printed reproduction of the logo color 410(b). We will refer to this particular reproduction of the logo color 410 as the “reference” printed logo color 410(b).
Beginning at step 502, the user 124 interacts with the host computer 104 to run the host application 126.
At step 504, the host application 126 displays a graphical user interface (GUI). The GUI may be in the form of one or more dialog boxes that are displayed automatically (as needed) on the host computer 104.
At step 506, the host application 126 (via the host GUI) instructs the user to obtain a “reference” printed reproduction of a target color the user desires the network printer 106 to emulate.
In response to this instruction, at step 508 the user 124 obtains the reference printed page 130(b). The reader will recall that the reference printed page 130(b) includes the reference printed logo color 410(b).
At step 510, the host application 126 (via the host GUI) instructs the user to provide input (via the host GUI) that identifies the document file in the host computer file system that was used to print the reference printed reproduction of the target color.
The reader will recall that the document file 130 was used to print the reference printed page 130(b). At step 511, therefore, the user 124 follows the host application instruction and provides input (via the host GUI) that identifies the document file 130. At step 512 the host application 126, in response to the user input, identifies the document file 130.
At step 514, the host application 126 causes the host to convert the identified document file (i.e., document file 130) into a print job 516 and to transmit the print job 516 to the network printer 106. This step may be accomplished by the host application 126 interacting with the print driver 128 as well as the native application (not shown in
At step 518, the network printer 106 receives the print job 516 and processes the job into a printed page 130(c) that includes a printed logo color 410(c). The printed logo color 410(c) is a reproduction, by the network printer 106, of the logo color 410. We will assume that there is a difference (ΔE)1 in color between the printed logo color 410(c) and the reference printed logo color 410(b).
In this example, we will also assume that the print job 516 is configured so that the network printer 106 is responsive to the job by applying the color conversions shown in
Furthermore, we will also assume the print job 516 includes a special command that causes the network printer 106 to sub-sample the hpRGB image data that is generated by the image pipeline 212 as it processes the image data in the print job 516. This results in a TIFF file 519 being created that comprises the sub-sampled hpRGB data. The TIFF file 519 is stored in the printer storage area 204.
At step 522, the host application 126 interacts with the web service programming 210 to retrieve data that describes an image of the printed page 130 (c). The TIFF file 519 may be used as the source of this data. The host application 126 then displays (via the host GUI) an image of the printed page 130(c). The host GUI may continue to display the image of the printed page 130(c) as the rest of the steps described below are performed.
At step 524, the host application 126 instructs (via the host GUI) the user to measure the reference reproduction of the target color(s) that the user obtained at step 508.
In response to this instruction, at step 526, the user 124 operates the color measurement system 108 to measure the reference printed logo color 410(b) that is printed on the reference printed page 130(b). This results in a reference logo color measurement 527 being generated.
At step 528, the host application 126 receives and stores the reference logo color measurement 527.
At step 530, the host application 126 (via the host GUI) instructs the user to measure the reproduction of the target color as produced by the network printer 106 at step 518.
In response to this instruction, at step 532, the user 124 operates the color measurement system 108 to measure the printed logo color 410(c) that was printed by the network printer 106 at step 518. This results in a second color measurement 533 being generated that describes the color of the logo color as reproduced by the network printer 106. For ease of discussion, we will refer to the second color measurement 533 as the “current” logo color measurement 533 as this color measurement represents the current behavior of the network printer 106 to reproduce the logo color. At step 534, the host application 126 receives and stores the current logo color measurement 533.
At step 536, the host application 126 uses the first reverse transform 340(a), the reference logo color measurement 527 and the current logo color measurement 533 to define an hpRGB-hpRGB look-up table (LUT) 538. This step is described further below in conjunction with
At step 540, the host application 126 uses the second reverse transform 340 (b), the reference logo color measurement 527 and the current logo color measurement 533 to define a CMYK-CMYK look-up table 542. This step is described further below in conjunction with
At step 544, the host application 126 (via the host GUI), instructs the user to input a name that will be assigned to the two look-up tables. At step 546, the user 124 follows the instruction and inputs a desired name (e.g., “Steve's logo color emulation”).
At step 548, the host application 126 receives the desired name and interacts with the web service programming 210 to store the two look-up tables 538, 542 into the printer storage area 204 under the desired name. As discussed further below, the two look up-tables 538, 542 provide the network printer 106 with the optional capability to emulate the reference printer 140 reproduction of the logo color.
Additionally, the first reverse transform 340(a) is used to transform the current logo color measurement 533 to a “current” hpRGB logo color 604. The “current” hpRGB logo color 604 represents an estimate of the hpRGB color that was provided as an input of the RGB/CMYK conversion 320 in order for the network printer 106 to output the printed logo color 410(c) at step 518.
As shown, the reference hpRGB logo color 602 and the current hpRGB logo color 604 may then be used as inputs to a pre-defined algorithm 606 that generates the RGB/RGB LUT 538. The pre-defined algorithm 606 may operate to identify the tetrahedron nodes that surround the current hpRGB logo color 604 and define the RGB/RGB LUT 538 to shift these particular nodes to contain the reference hpRGB logo color 602. The RGB/RGB LUT 538 may also be defined to blend nodes in proximity to the shifted nodes so as to minimize transition artifacts when the RGB/RGB LUT 538 is used.
As shown, the current CMYK color 614 and the reference CMYK color 608 may then be used as inputs to a pre-defined algorithm 612 that generates the CMYK/CMYK LUT 542. The pre-defined algorithm 612 may operate to identify the tetrahedron nodes that surround the current CMYK color 614 and define the CMYK/CMYK LUT 542 to shift these particular nodes to contain the reference CMYK color 608. The CMYK/CMYK LUT 542 may also be defined to blend nodes in proximity to the shifted nodes so as to minimize transition artifacts.
After the RGB-RGB LUT 538 and the CMYK-CMYK LUT 542 are defined and stored at step 548 under the user inputted name (e.g., Steve's logo color emulation), the user 124 may thereafter optionally cause the network printer 106 to use these look-up tables so as to enable the network printer 106 to emulate the reference printer 140 reproduction of the printed logo color 410(b).
According to one embodiment, for example, the print driver 128 may operate (at the request of the user) to query the network printer 106 to retrieve a list of printer capabilities. The list may include the one or more emulation options each previously established by the user 124 in a similar manner as described above in connection with
From the foregoing, the reader will note that the RGB-RGB LUT 538 affects the behavior of the image pipeline 212 so that the network printer 106 outputs a printed logo color 410(d) on the media type 305 and the following relationship is true: (ΔE)1>(ΔE)2.
Wherein as previously noted “(ΔE)1” represents the color difference (e.g., the CIE94 color difference) between the reference printed logo color 410(b) and the printed logo color 410(c) that was printed by the printer 106 at step 518 (without using the RGB/RGB LUT 538). And wherein “(ΔE)2” represents the color difference between the reference printed logo color 410(b) and the printed logo color 410(d) that is printed by the network printer 106 using the RGB/RGB LUT 538. Thus, the printed logo color 410(d) is a closer match (in color) to the reference printed logo color 410(b) than the printed logo color 410(c) printed at step 518.
In this embodiment, however, the host application displays a GUI 806 that includes a first image (current image 804) and an identical second image (desired image 805). The TIFF file 802 may be used as the source file for both images 804, 805. When the GUI 806 is first displayed the colors of both images 804, 805 are identical and correspond to the way the printer 106 would actually reproduce these colors. To display these colors in this manner, the TIFF file 802 may be first processed through a first transform 803 that converts the hpRGB data in the TIFF file 802 into image data 807. The image data 807 may be in a perceptual color space such as a CIELAB color space or an XYZ color space, for example. The image data 807 may be further processed through a color management system 808 that outputs image data 809 that is used to drive the host display. The color management system 808 may correct for the particular characteristics of the host computer 104.
A user may “point and click” (using the mouse 120) at any position (e.g., image position 814) in the current image 804 in order to select a color located at that position. Selecting a color in this manner results in a first bar 816 of the selected color and an identical second bar 818 of the selected color being displayed as shown. The user may select additional colors in this same manner.
The user may then interact with various color controls 820 to modify the displayed color of the second bar 818 to a color that matches a desired “reference” printed reproduction of that color. Thus, for example, the user may modify the second bar 818 to match the reference reproduction of the logo color 410(b), for example. As the user modifies the second bar color, the corresponding color in the “desired image 805” also changes to provide the user with visual feedback. In this example, however, the color of the first bar 816 and the current image 804 do not change.
Once the second bar 818 is modified to the desired color, the user may then select the “save to printer” option.
Upon selecting this option, the TIFF file 802 is used to obtain a “current” hpRGB color that corresponds to the original selected color as indicated by the first bar 814 and the corresponding color in the current image 804. A “reference” hpRGB color is also determined that corresponds to the present color (as modified by the user) of the second bar 818 and the corresponding color in the desired image 805.
The “reference” hpRGB color may be determined by applying a reverse transform to the host image data that describes the color of the second bar color bar 818. The reverse transform converts the host image data into a corresponding “reference hpRGB” color. An hpRGB-hpRGB LUT and a CMYK-CMYK LUT may then be defined using the reference hpRGB color and the current hpRGB color in a similar manner as is described above.
It is further noted that the present invention may be embodied in the form of a “computer-readable medium”. As used herein, the phrase “computer readable medium” can refer to any medium that can contain, store or propagate computer executable instructions. Thus, in this document, the phrase “computer-readable medium” may refer to a medium such as an optical storage device (e.g., a CD ROM) or a magnetic storage device (e.g., a magnetic tape). The phrase “computer-readable medium” may also refer to signals that are used to propagate the computer executable instructions over a network or a network system, such as the Public Internet.
Thus, a memory component (e.g., a memory storing the host application 126) that stores computer executable instructions may represent an embodiment of the invention. Furthermore, signals used to propagate the firmware over a communication link (e.g. an intranet, Public Internet, etc) may also represent an embodiment of the invention.
Although several specific embodiments of the invention have been described and illustrated, the invention is not to be limited to specific forms or arrangements of parts so described and illustrated. For example, the host application 126 described above could allow a user to set-up the network printer 106 to emulate more than one printer reproduction of a color.
The invention is limited only by the claims and the equivalents thereof.